Los factoriales de N> 20 no pueden almacenarse incluso en una variable larga de 64 bits.
Se deben usar enteros grandes para tales cálculos.
Lenguajes como Java, Python, Ruby, etc. pueden manejar enteros grandes, pero necesitamos escribir código adicional en C / C ++ para manejar grandes valores.
- ¿Debería centrarme en el aprendizaje de algoritmos y estructuras de datos en profundidad, o aprender una habilidad como desarrollo web o desarrollo móvil usando Nanodegree?
- En los concursos de programación, ¿puedo adivinar la complejidad temporal de la solución (digamos n, n ^ 2, log n) para el problema, dado el límite de tiempo para el problema?
- ¿Cuál es la forma más eficiente de ordenar un millón de enteros de 32 bits?
- ¿Cómo pueden uno y qué algoritmos podrían usarse para entrenar una red neuronal profunda con una cantidad limitada de datos desaprender sus representaciones mal aprendidas?
- ¿Cuál es un ejemplo de un buen algoritmo que se puede usar para unir a diferentes usuarios dentro de un determinado radio en cualquier ubicación según sus preferencias?
Solución: haremos como cualquier niño de 8 años que sea bueno con los números
Código:
#include
usando el espacio de nombres estándar;
int main ()
{
int n, j, temp;
int arr [200];
arr [0] = 1;
j = 0; // para el índice de la matriz arr
cout << "Ingrese el número .:";
cin >> n;
para (; n> = 2; n–)
{
temp = 0;
para (int i = 0; i <= j; i ++)
{
temp = (arr [i] * n) + temp;
arr [i] = temp% 10;
temp = temp / 10;
}
while (temp> 0) // para
{
arr [++ j] = temp% 10;
temp = temp / 10;
}
}
para (int i = j; i> = 0; i–)
printf (“% d”, arr [i]);
devuelve 0;
}
Salida: