gpt4 book ai didi

c++ - 为什么我的函数不适用于大数,我该如何更改它?

转载 作者:太空宇宙 更新时间:2023-11-04 15:36:07 25 4
gpt4 key购买 nike

我找到了一个解决问题的公式,但我无法让它适用于大数。第 n 个因素将是第 (n-1) 个因素 + (n-1)*(n-1) + n * n

所以我写了这个函数:

inline long long int formula(long long int n)
{
if(n==1)return 1;
return formula(n-1)+(n-1)*(n-1)+*n*n;
}

因为答案必须以 666013 为模计算,所以我添加了这个 (MOD=666013):

inline long long int formula(long long int n)
{
if(n==1)return 1;
return ((formula(n-1)%MOD+(1LL*(n-1)*(n-1))%MOD)%MOD+(1LL*n*n)%MOD)%MOD;
}

我可能没有正确使用模数。我的函数必须适用于大到 2.000.000.000 的数字,它在大约 30.000 时停止工作

编辑:我试过使用一个循环,但我仍然无法使其适用于大于 20.000.000 的数字。这是我正在使用的:

ans=1;
for(i=2;i<=n;i++)
{
ans=(ans%MOD+1LL*(i-1)*(i-1)%MOD+1LL*i*i%MOD)%MOD;
}

最佳答案

我不明白你为什么要为此使用递归函数。它会在少量调用时工作,但如果你递归调用它几百万次,那么......它不会。原因是您在另一个函数中的另一个函数中调用一个函数...太多次导致程序崩溃或命名为“堆栈溢出”。

克服这个问题的最好方法是使用循环来修复它!只需从 0 迭代到 n(n 是您想要获得的数字)。

关于c++ - 为什么我的函数不适用于大数,我该如何更改它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33465849/

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