Dado un número N , imprime todos los Números Fuertes menores o iguales a N .
Número fuerte es un número especial cuya suma del factorial de dígitos es igual al número original.
Por ejemplo: 145 es un número fuerte. Desde, 1! + 4! + 5! = 145.
Ejemplos:
Entrada: N = 100
Salida: 1 2
Explicación:
¡Solo 1 y 2 son los números fuertes del 1 al 100 porque
1! = 1 y
2! = 2Entrada: N = 1000
Salida: 1 2 145
Explicación:
¡Solo 1, 2 y 145 son los números fuertes del 1 al 1000 porque
1! = 1,
2! = 2, y
(1! + 4! + 5!) = 145
Enfoque: la idea es iterar desde [1, N] y verificar si algún número entre el rango es un número fuerte o no . En caso afirmativo, imprima el número correspondiente; de lo contrario, verifique el siguiente número.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include<bits/stdc++.h> using namespace std; // Store the factorial of all the // digits from [0, 9] int factorial[] = { 1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880 }; // Function to return true // if number is strong or not bool isStrong(int N) { // Converting N to String so that // can easily access all it's digit string num = to_string(N); // sum will store summation of // factorial of all digits // of a number N int sum = 0; for(int i = 0; i < num.length(); i++) { sum += factorial[num[i] - '0']; } // Returns true of N is strong number return sum == N; } // Function to print all // strong number till N void printStrongNumbers(int N) { // Iterating from 1 to N for(int i = 1; i <= N; i++) { // Checking if a number is // strong then print it if (isStrong(i)) { cout << i << " "; } } } // Driver Code int main() { // Given number int N = 1000; // Function call printStrongNumbers(N); return 0; } // This code is contributed by rutvik_56
Java
// Java program for the above approach class GFG { // Store the factorial of all the // digits from [0, 9] static int[] factorial = { 1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880 }; // Function to return true // if number is strong or not public static boolean isStrong(int N) { // Converting N to String so that // can easily access all it's digit String num = Integer.toString(N); // sum will store summation of // factorial of all digits // of a number N int sum = 0; for (int i = 0; i < num.length(); i++) { sum += factorial[Integer .parseInt(num .charAt(i) + "")]; } // Returns true of N is strong number return sum == N; } // Function to print all // strong number till N public static void printStrongNumbers(int N) { // Iterating from 1 to N for (int i = 1; i <= N; i++) { // Checking if a number is // strong then print it if (isStrong(i)) { System.out.print(i + " "); } } } // Driver Code public static void main(String[] args) throws java.lang.Exception { // Given Number int N = 1000; // Function Call printStrongNumbers(N); } }
Python3
# Python3 program for the # above approach # Store the factorial of # all the digits from [0, 9] factorial = [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880] # Function to return true # if number is strong or not def isStrong(N): # Converting N to String # so that can easily access # all it's digit num = str(N) # sum will store summation # of factorial of all # digits of a number N sum = 0 for i in range (len(num)): sum += factorial[ord(num[i]) - ord('0')] # Returns true of N # is strong number if sum == N: return True else: return False # Function to print all # strong number till N def printStrongNumbers(N): # Iterating from 1 to N for i in range (1, N + 1): # Checking if a number is # strong then print it if (isStrong(i)): print (i, end = " ") # Driver Code if __name__ == "__main__": # Given number N = 1000 # Function call printStrongNumbers(N) # This code is contributed by Chitranayal
C#
// C# program for the above approach using System; class GFG{ // Store the factorial of all the // digits from [0, 9] static int[] factorial = { 1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880 }; // Function to return true // if number is strong or not public static bool isStrong(int N) { // Converting N to String so that // can easily access all it's digit String num = N.ToString(); // sum will store summation of // factorial of all digits // of a number N int sum = 0; for (int i = 0; i < num.Length; i++) { sum += factorial[int.Parse(num[i] + "")]; } // Returns true of N is strong number return sum == N; } // Function to print all // strong number till N public static void printStrongNumbers(int N) { // Iterating from 1 to N for (int i = 1; i <= N; i++) { // Checking if a number is // strong then print it if (isStrong(i)) { Console.Write(i + " "); } } } // Driver Code public static void Main(String[] args) { // Given Number int N = 1000; // Function Call printStrongNumbers(N); } } // This code is contributed by sapnasingh4991
Javascript
<script> // Javascript program for the above approach // Store the factorial of all the // digits from [0, 9] let factorial = [ 1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880 ]; // Function to return true // if number is strong or not function isStrong(N) { // Converting N to String so that // can easily access all it's digit let num = N.toString(); // sum will store summation of // factorial of all digits // of a number N let sum = 0; for(let i = 0; i < num.length; i++) { sum += factorial[num[i] - '0']; } // Returns true of N is strong number return sum == N; } // Function to print all // strong number till N function printStrongNumbers(N) { // Iterating from 1 to N for(let i = 1; i <= N; i++) { // Checking if a number is // strong then print it if (isStrong(i)) { document.write(i + " "); } } } // Driver Code // Given number let N = 1000; // Function call printStrongNumbers(N); // This code is contributed by Mayank Tyagi </script>
1 2 145
Complejidad de tiempo: O(N)
Publicación traducida automáticamente
Artículo escrito por shubham prakash 1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA