Related Articles
Disarium Number
• Difficulty Level : Easy
• Last Updated : 09 Nov, 2020

Given a number “n”, find if it is Disarium or not. A number is called Disarium if sum of its digits powered with their respective positions is equal to the number itself.

Examples:

```Input   : n = 135
Output  : Yes
1^1 + 3^2 + 5^3 = 135
Therefore, 135 is a Disarium number

Input   : n = 89
Output  : Yes
8^1+9^2 = 89
Therefore, 89 is a Disarium number

Input   : n = 80
Output  : No
8^1 + 0^2 = 8

```

The idea is to fist count digits in given numbers. Once we have count, we traverse all digits from right most (using % operator), raise its power to digit count and decrement the digit count.

Below is the implementation of above idea.

## C++

 `// C++ program to check whether a number is Desoriam``// or not``#include``using` `namespace` `std;`` ` `// Finds count of digits in n``int` `countDigits(``int` `n)``{``    ``int` `count_digits = 0;`` ` `    ``// Count number of digits in n``    ``int` `x = n;``    ``while` `(x)``    ``{``        ``x = x/10;`` ` `        ``// Count the no. of digits``        ``count_digits++;``    ``}``    ``return` `count_digits;``}`` ` `// Function to check whether a number is disarium or not``bool` `check(``int` `n)``{``    ``// Count digits in n.``    ``int` `count_digits = countDigits(n);`` ` `    ``// Compute sum of terms like digit multiplied by``    ``// power of position``    ``int` `sum = 0; ``// Initialize sum of terms``    ``int` `x = n;``    ``while` `(x)``    ``{``        ``// Get the rightmost digit``        ``int` `r = x%10;`` ` `        ``// Sum the digits by powering according to``        ``// the positions``        ``sum = sum + ``pow``(r, count_digits--);``        ``x = x/10;``    ``}`` ` `    ``// If sum is same as number, then number is``    ``return` `(sum == n);``}`` ` `//Driver code to check if number is disarium or not``int` `main()``{``    ``int` `n = 135;``    ``if``( check(n))``        ``cout << ``"Disarium Number"``;``    ``else``        ``cout << ``"Not a Disarium Number"``;``    ``return` `0;``}`

## Java

 `// Java program to check whether a number is Desoriam``// or not`` ` `class` `Test``{``    ``// Method to check whether a number is disarium or not``    ``static` `boolean` `check(``int` `n)``    ``{``        ``// Count digits in n.``        ``int` `count_digits = Integer.toString(n).length();``      ` `        ``// Compute sum of terms like digit multiplied by``        ``// power of position``        ``int` `sum = ``0``; ``// Initialize sum of terms``        ``int` `x = n;``        ``while` `(x!=``0``)``        ``{``            ``// Get the rightmost digit``            ``int` `r = x%``10``;``      ` `            ``// Sum the digits by powering according to``            ``// the positions``            ``sum = (``int``) (sum + Math.pow(r, count_digits--));``            ``x = x/``10``;``        ``}``      ` `        ``// If sum is same as number, then number is``        ``return` `(sum == n);``    ``}``     ` `    ``// Driver method``    ``public` `static` `void` `main(String[] args) ``    ``{``        ``int` `n = ``135``;``         ` `        ``System.out.println(check(n) ? ``"Disarium Number"` `: ``"Not a Disarium Number"``);``    ``}``}`

## Python

 `# Python program to check whether a number is Desarium``# or not``import` `math `` ` `# Method to check whether a number is disarium or not``def` `check(n) :`` ` `    ``# Count digits in n.``    ``count_digits ``=` `len``(``str``(n))``      ` `    ``# Compute sum of terms like digit multiplied by``    ``# power of position``    ``sum` `=` `0`  `# Initialize sum of terms``    ``x ``=` `n``    ``while` `(x!``=``0``) :`` ` `        ``# Get the rightmost digit``        ``r ``=` `x ``%` `10``          ` `        ``# Sum the digits by powering according to``        ``# the positions``        ``sum` `=` `(``int``) (``sum` `+` `math.``pow``(r, count_digits))``        ``count_digits ``=` `count_digits ``-` `1``        ``x ``=` `x``/``10``        ` `    ``# If sum is same as number, then number is``    ``if` `sum` `=``=` `n :``        ``return` `1``    ``else` `:``        ``return` `0``       ` `# Driver method``n ``=` `135``if` `(check(n) ``=``=` `1``) :``    ``print` `"Disarium Number"``else` `:``    ``print` `"Not a Disarium Number"``  ` `# This code is contributed by Nikita Tiwari.`

## C#

 `// C# program to check whether a number``// is Desoriam or not``using` `System;`` ` `class` `GFG{``     ` `// Method to check whether a number``// is disarium or not``static` `bool` `check(``int` `n)``{``     ` `    ``// Count digits in n.``    ``int` `count_digits = n.ToString().Length;``  ` `    ``// Compute sum of terms like digit ``    ``// multiplied by power of position``    ``// Initialize sum of terms``    ``int` `sum = 0; ``    ``int` `x = n;``     ` `    ``while` `(x != 0)``    ``{``         ` `        ``// Get the rightmost digit``        ``int` `r = x % 10;``  ` `        ``// Sum the digits by powering according``        ``// to the positions``        ``sum = (``int``)(sum + Math.Pow(``              ``r, count_digits--));``        ``x = x / 10;``    ``}``  ` `    ``// If sum is same as number, ``    ``// then number is``    ``return` `(sum == n);``}`` ` `// Driver code``public` `static` `void` `Main(``string``[] args) ``{``    ``int` `n = 135;``     ` `    ``Console.Write(check(n) ? ``"Disarium Number"` `:``                       ``"Not a Disarium Number"``);``}``}`` ` `// This code is contributed by rutvik_56`

Output:

```Disarium Number
```

This article is contributed by Sahil Chhabra(KILLER). If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.