Entiendo que este es un problema clásico de programación y, por lo tanto, quiero dejar claro que no estoy buscando el código como solución, pero agradecería un empujón en la dirección correcta. Estoy aprendiendo C++ y como parte del proceso de aprendizaje estoy intentando algunos problemas de programación. Estoy intentando escribir un programa que trata con números hasta factorial de 1 billón. Obviamente, estos serán números enormes y demasiado grandes para tratar con el uso de operaciones aritméticas normales. Cualquier indicación en cuanto a qué dirección debería tomar para tratar de resolver este tipo de problema sería apreciada.Cálculo de factoriales grandes en C++
prefiero tratar de resolver esto sin usar las bibliotecas adicionales, si es posible
Gracias
PS - el problema es que aquí http://www.codechef.com/problems/FCTRL
Aquí está el método que utiliza para resolver el problema Esto se logró leyendo los comentarios a continuación:
Solución: el número 5 es un factor primo de cualquier número que termine en cero. Por lo tanto, dividiendo el número factorial por 5, recursivamente, y agregando los cocientes, obtienes el número de ceros finales en el resultado factorial
E.G. - ¡Número de ceros finales en 126! = 31
126/5 = 25 resto 1
25/5 = 5 resto 0
5/5 = 1 resto 0
25 + 5 + 1 = 31
Esto funciona para cualquier valor, solo siga dividiendo hasta que el cociente sea menor que 5
Dupe: http://stackoverflow.com/questions/1966077/calculate-the-factorial-of-an-arbitrarily-large-number-showing-all-the-digits –
No es realmente un dup. El problema de OP se puede resolver sin conocer ninguno de los dígitos del factorial :-) – ephemient
No es un dup en absoluto, porque resolver este problema calculando todos los dígitos del factorial no tiene ninguna posibilidad de entrar en el límite de 8s en este problema. Factorial mil millones empuja 9 mil millones de dígitos decimales de largo, por lo que estaría manipulando alrededor de 3-4 GB de datos. –