Perfect Digital Invariants number
Last Updated :
25 May, 2021
A positive integer is called a Perfect Digital Invariant Number if the sum of some fixed power of their digits is equal to the number itself.
For any number, abcd… = pow(a, n) + pow(b, n) + pow(c, n) + pow(d, n) + …. ,
where n can be any integer greater than 0.
Check if N is Perfect Digital Invariant Number or not
Given a number N, the task is to check if the given number N is Perfect Digital Invariant Number or not. If N is a Perfect Digital Invariant Number then print “Yes” else print “No”.
Example:
Input: N = 153
Output: Yes
Explanation:
153 is a Perfect Digital Invariants number as for n = 3 we have
13 + 53 + 33 = 153
Input: 4150
Output: Yes
Explanation:
4150 is a Perfect Digital Invariants number as for n = 5 we have
45 + 15 + 55 + 05 = 4150
Approach: For every digit in number N, calculate the sum of its digit power starting from a fixed number 1 until the sum of digit’s power of N exceeds N. If N is a Perfect Digital Invariant Number then print “Yes” else print “No”.
C++
#include <bits/stdc++.h>
using namespace std;
int power( int x, unsigned int y)
{
if (y == 0) {
return 1;
}
if (y % 2 == 0) {
return (power(x, y / 2)
* power(x, y / 2));
}
return (x
* power(x, y / 2)
* power(x, y / 2));
}
bool isPerfectDigitalInvariant( int x)
{
for ( int fixed_power = 1;; fixed_power++) {
int temp = x, sum = 0;
while (temp) {
int r = temp % 10;
sum += power(r, fixed_power);
temp = temp / 10;
}
if (sum == x) {
return true ;
}
if (sum > x) {
return false ;
}
}
}
int main()
{
int N = 4150;
if (isPerfectDigitalInvariant(N))
cout << "Yes" ;
else
cout << "No" ;
}
|
Java
import java.util.*;
class GFG{
static int power( int x, int y)
{
if (y == 0 )
{
return 1 ;
}
if (y % 2 == 0 )
{
return (power(x, y / 2 ) *
power(x, y / 2 ));
}
return (x * power(x, y / 2 ) *
power(x, y / 2 ));
}
static boolean isPerfectDigitalInvariant( int x)
{
for ( int fixed_power = 1 ;; fixed_power++)
{
int temp = x, sum = 0 ;
while (temp > 0 )
{
int r = temp % 10 ;
sum += power(r, fixed_power);
temp = temp / 10 ;
}
if (sum == x)
{
return true ;
}
if (sum > x)
{
return false ;
}
}
}
public static void main(String[] args)
{
int N = 4150 ;
if (isPerfectDigitalInvariant(N))
System.out.print( "Yes" );
else
System.out.print( "No" );
}
}
|
Python3
def power(x, y):
if (y = = 0 ):
return 1
if (y % 2 = = 0 ):
return (power(x, y / / 2 ) * power(x, y / / 2 ))
return (x * power(x, y / / 2 ) * power(x, y / / 2 ))
def isPerfectDigitalInvariant(x):
fixed_power = 0
while True :
fixed_power + = 1
temp = x
summ = 0
while (temp):
r = temp % 10
summ = summ + power(r, fixed_power)
temp = temp / / 10
if (summ = = x):
return ( True )
if (summ > x):
return ( False )
N = 4150
if (isPerfectDigitalInvariant(N)):
print ( "Yes" )
else :
print ( "No" )
|
C#
using System;
class GFG{
static int power( int x, int y)
{
if (y == 0)
{
return 1;
}
if (y % 2 == 0)
{
return (power(x, y / 2) *
power(x, y / 2));
}
return (x * power(x, y / 2) *
power(x, y / 2));
}
static bool isPerfectDigitalInvariant( int x)
{
for ( int fixed_power = 1;; fixed_power++)
{
int temp = x, sum = 0;
while (temp > 0)
{
int r = temp % 10;
sum += power(r, fixed_power);
temp = temp / 10;
}
if (sum == x)
{
return true ;
}
if (sum > x)
{
return false ;
}
}
}
public static void Main(String[] args)
{
int N = 4150;
if (isPerfectDigitalInvariant(N))
Console.Write( "Yes" );
else
Console.Write( "No" );
}
}
|
Javascript
<script>
function power(x, y)
{
if (y == 0) {
return 1;
}
if (y % 2 == 0) {
return (power(x, Math.floor(y / 2))
* power(x, Math.floor(y / 2)));
}
return (x
* power(x, Math.floor(y / 2))
* power(x, Math.floor(y / 2)));
}
function isPerfectDigitalInvariant(x)
{
for ( var fixed_power = 1;; fixed_power++) {
var temp = x, sum = 0;
while (temp) {
var r = temp % 10;
sum += power(r, fixed_power);
temp = Math.floor(temp / 10);
}
if (sum == x) {
return true ;
}
if (sum > x) {
return false ;
}
}
}
var N = 4150;
if (isPerfectDigitalInvariant(N))
document.write( "Yes" );
else
document.write( "No" );
</script>
|
Share your thoughts in the comments
Please Login to comment...