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 = n.toString().length;
// 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
Disarium Number
Time complexity : O(logn)
Auxiliary Space : O(1)