¡Dado un número, encuentre los 5 dígitos antes del 0,99 posterior! = 362880 tan f (9) = 36288 10! = 3628800 entonces f (10) = 36288 20! = 2432902008176640000 tan f (20) = 17664 Calcula f (1.000.000.000.000)Euler 160: Encuentre los 5 dígitos no triviales del factorial
Para esto he calculado la f(10^6)
f(10^12) = (f(10^6))^(10^6)
y luego para calcular la f(n)
... estoy computación en el factorial mediante la eliminación de cualquier 5 y que corresponde 2 para que se eliminen todos los ceros .
Pero recibo una respuesta incorrecta.
¿Hay algún problema en el enfoque o algún error tonto?
para referencia
long long po(long long n, long long m, long long mod) {
if (m == 0) return 1;
if (m == 1) return n % mod;
long long r = po(n, m/2, mod) % mod;
if (m % 2 == 0) return (r * r) % mod;
return (((r * r) % mod) * n) % mod;
}
void foo() {
unsigned long long i, res = 1, m = 1000000 , c = 0, j, res1 = 1, mod;
mod = ceil(pow(10, 9));
cout << mod << endl;
long long a = 0, a2 = 0, a5 = 0;
for (i = 1 ; i <= m; i++) {
j = i;
while (j % 10 == 0)
j /= 10;
while (j % 2 == 0) {
j /= 2;
a2++;
}
while (j % 5 == 0) {
j /= 5;
a5++;
}
res = (res * j) % mod;
}
a = a2 - a5;
for (i = 1; i <= a; i++)
res = (res * 2) % mod;
for (i = 1; i <= 1000000; i++) {
res1 = (res1 * res) % mod;
}
cout << res1 << endl;
}
¿Puedes publicar tu código? – 0605002
también, no es algo del proyecto euler que deba resolver usted mismo en lugar de pedir ayuda ... solo dice que si deja que alguien más lo resuelva, no solo obtendrá nada de eso sino que también la respuesta estará ahora en TAN para que todos lo vean – hackartist