Dado un número entero N , la tarea es verificar si N divide la suma de los factoriales de sus dígitos.
Ejemplos:
Entrada: N = 19
Salida: Sí
1! + 9! = 1 + 362880 = 362881, que es divisible por 19.Entrada: N = 20
Salida: No
0! + 2! = 1 + 4 = 5, que no es divisible por 20.
Enfoque: primero, almacene los factoriales de todos los dígitos del 0 al 9 en una array. Y, para el número N dado, comprueba si divide la suma de los factoriales de sus dígitos.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; // Function that returns true if n divides // the sum of the factorials of its digits bool isPossible(int n) { // To store factorials of digits int fac[10]; fac[0] = fac[1] = 1; for (int i = 2; i < 10; i++) fac[i] = fac[i - 1] * i; // To store sum of the factorials // of the digits int sum = 0; // Store copy of the given number int x = n; // Store sum of the factorials // of the digits while (x) { sum += fac[x % 10]; x /= 10; } // If it is divisible if (sum % n == 0) return true; return false; } // Driver code int main() { int n = 19; if (isPossible(n)) cout << "Yes"; else cout << "No"; return 0; }
Java
// Java implementation of the approach class GFG { // Function that returns true if n divides // the sum of the factorials of its digits static boolean isPossible(int n) { // To store factorials of digits int fac[] = new int[10]; fac[0] = fac[1] = 1; for (int i = 2; i < 10; i++) fac[i] = fac[i - 1] * i; // To store sum of the factorials // of the digits int sum = 0; // Store copy of the given number int x = n; // Store sum of the factorials // of the digits while (x != 0) { sum += fac[x % 10]; x /= 10; } // If it is divisible if (sum % n == 0) return true; return false; } // Driver code public static void main (String[] args) { int n = 19; if (isPossible(n)) System.out.println("Yes"); else System.out.println("No"); } } // This code is contributed by Ryuga
Python3
# Python 3 implementation of the approach # Function that returns true if n divides # the sum of the factorials of its digits def isPossible(n): # To store factorials of digits fac = [0 for i in range(10)] fac[0] = 1 fac[1] = 1 for i in range(2, 10, 1): fac[i] = fac[i - 1] * i # To store sum of the factorials # of the digits sum = 0 # Store copy of the given number x = n # Store sum of the factorials # of the digits while (x): sum += fac[x % 10] x = int(x / 10) # If it is divisible if (sum % n == 0): return True return False # Driver code if __name__ == '__main__': n = 19 if (isPossible(n)): print("Yes") else: print("No") # This code is contributed by # Surendra_Gangwar
C#
// C# implementation of the approach using System; class GFG { // Function that returns true if n divides // the sum of the factorials of its digits static bool isPossible(int n) { // To store factorials of digits int[] fac = new int[10]; fac[0] = fac[1] = 1; for (int i = 2; i < 10; i++) fac[i] = fac[i - 1] * i; // To store sum of the factorials // of the digits int sum = 0; // Store copy of the given number int x = n; // Store sum of the factorials // of the digits while (x != 0) { sum += fac[x % 10]; x /= 10; } // If it is divisible if (sum % n == 0) return true; return false; } // Driver code public static void Main () { int n = 19; if (isPossible(n)) Console.WriteLine("Yes"); else Console.WriteLine("No"); } } // This code is contributed by Code_Mech.
PHP
<?php // PHP implementation of the approach // Function that returns true if n divides // the sum of the factorials of its digits function isPossible($n) { // To store factorials of digits $fac = array(); $fac[0] = $fac[1] = 1; for ($i = 2; $i < 10; $i++) $fac[$i] = $fac[$i - 1] * $i; // To store sum of the factorials // of the digits $sum = 0; // Store copy of the given number $x = $n; // Store sum of the factorials // of the digits while ($x) { $sum += $fac[$x % 10]; $x /= 10; } // If it is divisible if ($sum % $n == 0) return true; return false; } // Driver code $n = 19; if (isPossible($n)) echo "Yes"; else echo "No"; // This code is contributed by Akanksha Rai ?>
Javascript
<script> // JavaScript implementation of the approach // Function that returns true if n divides // the sum of the factorials of its digits function isPossible(n) { // To store factorials of digits var fac = new Array(10); fac[0] = fac[1] = 1; for(var i = 2; i < 10; i++) fac[i] = fac[i - 1] * i; // To store sum of the factorials // of the digits var sum = 0; // Store copy of the given number var x = n; // Store sum of the factorials // of the digits while (x != 0) { sum += fac[x % 10]; x = parseInt(x / 10); } // If it is divisible if (sum % n == 0) return true; return false; } // Driver Code var n = 19; if (isPossible(n)) document.write("Yes"); else document.write("No"); // This code is contributed by Khushboogoyal499 </script>
Producción:
Yes
Complejidad de tiempo: O (logn)
Espacio Auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por pawan_asipu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA