Dado un número N , la tarea es verificar si el número dado es el número de Armstrong o no. Si el número dado es el número de Armstrong, escriba «Sí» , de lo contrario, escriba «No» .
Un número entero positivo de D dígitos se denomina número de armstrong de orden D (el orden es el número de dígitos) si
Donde D es el número de dígito en el número N
y N(1), N(2), N(3)… son dígito del número N.
Ejemplos:
Entrada: N = 153
Salida: Sí
Explicación:
153 es un número de Armstrong.
1*1*1 + 5*5*5 + 3*3*3 = 153Entrada: 120
Salida: No
Explicación:
120 no es un número de Armstrong.
1*1*1 + 2*2*2 + 0*0*0 = 9
Enfoque: La idea es contar el número de dígitos (digamos d ) en el número dado N . Para cada dígito (por ejemplo, r ) en el número dado N , encuentre el valor de rd y si la suma de todos los valores es N , imprima «Sí» , de lo contrario, imprima «No» .
A continuación se muestra la implementación del enfoque anterior:
C
// C program to find Armstrong number #include <stdio.h> // Function to calculate N raised // to the power D int power(int N, unsigned int D) { if (D == 0) return 1; if (D % 2 == 0) return power(N, D / 2) * power(N, D / 2); return N * power(N, D / 2) * power(N, D / 2); } // Function to calculate the order of // the number int order(int N) { int r = 0; // For each digit while (N) { r++; N = N / 10; } return r; } // Function to check whether the given // number is Armstrong number or not int isArmstrong(int N) { // Calling order function int D = order(N); int temp = N, sum = 0; // For each digit while (temp) { int Ni = temp % 10; sum += power(Ni, D); temp = temp / 10; } // If satisfies Armstrong condition if (sum == N) return 1; else return 0; } // Driver Code int main() { // Given Number N int N = 153; // Function Call if (isArmstrong(N) == 1) printf("True\n"); else printf("False\n"); return 0; }
C++
// C++ program to find Armstrong number #include <bits/stdc++.h> using namespace std; // Function to calculate N raised // to the power D int power(int N, unsigned int D) { if (D == 0) return 1; if (D % 2 == 0) return power(N, D / 2) * power(N, D / 2); return N * power(N, D / 2) * power(N, D / 2); } // Function to calculate the order of // the number int order(int N) { int r = 0; // For each digit while (N) { r++; N = N / 10; } return r; } // Function to check whether the given // number is Armstrong number or not int isArmstrong(int N) { // To find order of N int D = order(N); int temp = N, sum = 0; // Traverse each digit while (temp) { int Ni = temp % 10; sum += power(Ni, D); temp = temp / 10; } // If satisfies Armstrong condition if (sum == N) return 1; else return 0; } // Driver Code int main() { // Given Number N int N = 153; // Function Call if (isArmstrong(N) == 1) cout << "True"; else cout << "False"; return 0; }
True
Complejidad de tiempo: O(log 10 N)
Espacio auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por chaitanya3163 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA