## Disarium Number

Back to Programming

### Description

A number is said to be disarium number if the sum of its digits powered with their position is the same as the original number

For example, if the number is 135, then the sum of the digits powered with their position can be calculated as:

11+32+53 (position) = 1+9+125 (power) = 135, this is equal to the original number. Therefore, 135 is a disarium number.

If the number is 125, then the sum of the digits powered with their position is:

11+22+53 = 1+4+125 = 130, this is not equal to the original number. Therefore, 125 is not a disarium number.

For this program, a number is taken as input. Then the number of digits of the number is counted and according to the position the digits are powered and added. After completing, the sum of the power of the digits are compared with the original number, if both are the same, then the number is a disarium number, otherwise not.

### Algorithm

``````INPUT: A number
OUTPUT: Whether the number is a disarium number or not
PROCESS:
Step 1: [Taking the input]
Read n [number to be checked]
Step 2: [Checking for disarium number]
Set d<-0
Set s<-0
[Counting the number of digits of the given number]
Set tmp<-n
While tmp>0 repeat
Set d<-d+1
Set tmp<-tmp/10
[End of ‘while’ loop]
[Finding the sum of the power of digits]
Set tmp<-n
While tmp>0 repeat
[Power is calculated according the position of the digits]
Set s<-s+(tmp mod 10)d
Set tmp<-tmp/10
Set d<-d-1
[End of ‘while’ loop]
[Checking the condition for disarium number]
If s=n then
Print "The given number is a disarium number"
Else
Print "The given number is not a disarium number"
[End of ‘if-else’]
Step 3: Stop.
``````

## Time Complexity:

while(tmp>0)--------------------------------------O(n) [‘n’ is the number of digits]

{              d++;

tmp/=10;    }

//finding the sum of the power of digits

tmp=n;

while(tmp>0)--------------------------------------O(n) [‘n’ is the number of digits]

{                //power is calculated according the position

//of the digits

s=s+pow(tmp%10,d);

tmp/=10;

d--;   }

//checking the condition for disarium number

if(s==n)---------------------------------------------O(1)

printf("The given number is a disarium number");

else-------------------------------------------------O(1)

printf("The given number is not a disarium number");

The time complexity of this program is O(n) where ‘n’ is the number of digits of the number to be checked.

## Space Complexity:

The space complexity of this program is O(1) as it requires a constant number of spaces to execute for any given input.