Un entero positivo se llama Número Invariante Digital Perfecto si la suma de alguna potencia fija de sus dígitos es igual al número mismo.
Para cualquier número, abcd… = pow(a, n) + pow(b, n) + pow(c, n) + pow(d, n) + …. ,
donde n puede ser cualquier número entero mayor que 0.
Compruebe si N es un número invariante digital perfecto o no
Dado un número N , la tarea es verificar si el número N dado es un número invariante digital perfecto o no. Si N es un número invariante digital perfecto , imprima «Sí» , de lo contrario, imprima «No» .
Ejemplo:
Entrada: N = 153
Salida: Sí
Explicación:
153 es un número Perfect Digital Invariantes ya que para n = 3 tenemos
1 3 + 5 3 + 3 3 = 153
Entrada: 4150
Salida: Sí
Explicación:
4150 es un número Perfect Digital Invariantes como para n = 5 tenemos
4 5 + 1 5 + 5 5 + 0 5 = 4150
Enfoque: Para cada dígito en el número N , calcule la suma de la potencia de su dígito a partir de un número fijo 1 hasta que la suma de la potencia del dígito de N exceda a N . Si N es un número invariante digital perfecto , imprima «Sí» , de lo contrario, imprima «No» .
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Function to calculate x raised // to the power y 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)); } // Function to check whether the given // number is Perfect Digital Invariant // number or not bool isPerfectDigitalInvariant(int x) { for (int fixed_power = 1;; fixed_power++) { int temp = x, sum = 0; // For each digit in temp while (temp) { int r = temp % 10; sum += power(r, fixed_power); temp = temp / 10; } // If satisfies Perfect Digital // Invariant condition if (sum == x) { return true; } // If sum exceeds n, then not possible if (sum > x) { return false; } } } // Driver Code int main() { // Given Number N int N = 4150; // Function Call if (isPerfectDigitalInvariant(N)) cout << "Yes"; else cout << "No"; }
Java
// Java program for the above approach import java.util.*; class GFG{ // Function to calculate x raised // to the power y 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)); } // Function to check whether the given // number is Perfect Digital Invariant // number or not static boolean isPerfectDigitalInvariant(int x) { for (int fixed_power = 1;; fixed_power++) { int temp = x, sum = 0; // For each digit in temp while (temp > 0) { int r = temp % 10; sum += power(r, fixed_power); temp = temp / 10; } // If satisfies Perfect Digital // Invariant condition if (sum == x) { return true; } // If sum exceeds n, then not possible if (sum > x) { return false; } } } // Driver Code public static void main(String[] args) { // Given Number N int N = 4150; // Function Call if (isPerfectDigitalInvariant(N)) System.out.print("Yes"); else System.out.print("No"); } } // This code is contributed by gauravrajput1
Python3
# Python3 implementation of the above approach # Function to find the # sum of divisors 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)) # Function to check whether the given # number is Perfect Digital Invariant # number or not def isPerfectDigitalInvariant(x): fixed_power = 0 while True: fixed_power += 1 temp = x summ = 0 # For each digit in temp while (temp): r = temp % 10 summ = summ + power(r, fixed_power) temp = temp//10 # If satisfies Perfect Digital # Invariant condition if (summ == x): return (True) # If sum exceeds n, then not possible if (summ > x): return (False) # Driver code # Given Number N N = 4150 # Function Call if (isPerfectDigitalInvariant(N)): print("Yes") else: print("No") # This code is contributed by vikas_g
C#
// C# program for the above approach using System; class GFG{ // Function to calculate x raised // to the power y 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)); } // Function to check whether the given // number is Perfect Digital Invariant // number or not static bool isPerfectDigitalInvariant(int x) { for(int fixed_power = 1;; fixed_power++) { int temp = x, sum = 0; // For each digit in temp while (temp > 0) { int r = temp % 10; sum += power(r, fixed_power); temp = temp / 10; } // If satisfies Perfect Digital // Invariant condition if (sum == x) { return true; } // If sum exceeds n, then not possible if (sum > x) { return false; } } } // Driver Code public static void Main(String[] args) { // Given number N int N = 4150; // Function call if (isPerfectDigitalInvariant(N)) Console.Write("Yes"); else Console.Write("No"); } } // This code is contributed by PrinciRaj1992
Javascript
<script> // Javascript implementation // Function to calculate x raised // to the power y 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 to check whether the given // number is Perfect Digital Invariant // number or not function isPerfectDigitalInvariant(x) { for (var fixed_power = 1;; fixed_power++) { var temp = x, sum = 0; // For each digit in temp while (temp) { var r = temp % 10; sum += power(r, fixed_power); temp = Math.floor(temp / 10); } // If satisfies Perfect Digital // Invariant condition if (sum == x) { return true; } // If sum exceeds n, then not possible if (sum > x) { return false; } } } // Driver Code // Given Number N var N = 4150; // Function Call if (isPerfectDigitalInvariant(N)) document.write("Yes"); else document.write("No"); // This code is contributed by shubhamsingh10 </script>
Yes