Disarium Number
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 first 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 Disarium // or not #include<bits/stdc++.h> 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 disarium // 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" ); } } |
Python3
# Python program to check whether a number is Disarium # 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 Disarium 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 |
Javascript
<script> // JavaScript program to check whether a number is Disarium // or not // Method to check whether a number is disarium or not function check(n) { // Count digits in n. var count_digits = Number.toString(); // Compute sum of terms like digit multiplied by // power of position var sum = 0; // Initialize sum of terms var x = n; while (x!=0) { // Get the rightmost digit var r = x%10; // Sum the digits by powering according to // the positions sum = (sum + Math.pow(r, count_digits--)); x = x/10; } // If sum is same as number, then number is return (sum = n); } // Driver method var n = 135; document.write(check(n) ? "Disarium Number" : "Not a Disarium Number" ); // This code is contributed by shivanisinghss2110 </script> |
Output: