Imprimir todos los números fuertes menores o iguales a N

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! = 2

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

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

Deja una respuesta

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