Número perfecto de invariantes digitales

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>
Producción: 

Yes

 

Publicación traducida automáticamente

Artículo escrito por spp____ y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *