gpt4 book ai didi

c - 欧拉 160 : Find the non trivial 5 digits of the factorial

转载 作者:太空狗 更新时间:2023-10-29 15:01:09 27 4
gpt4 key购买 nike

Given a number find the 5 digits before the trailing 0. 9! = 362880 so f(9)=36288 10! = 3628800 so f(10)=36288 20! = 2432902008176640000 so f(20)=17664 Find f(1,000,000,000,000)

为此,我计算了 f(10^6) 然后是 f(10^12) =
(f(10^6))^(10^6)
用于计算 f(n) ...我正在计算通过删除任何 5 和相应的 2 的阶乘,使得所有删除尾随零。
但是我得到了一个错误的答案。
是否存在方法问题或一些愚蠢的错误?

引用代码

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;
}

最佳答案

您的等式 f(10^12) = (f(10^6))^(10^6) 是错误的。 f() 基于阶乘,而不是幂。

关于c - 欧拉 160 : Find the non trivial 5 digits of the factorial,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9333797/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com