【发布时间】:2013-01-22 02:10:29
【问题描述】:
我正在尝试计算下面的大数表达式。
由于这个表达式的值会很大,我只需要这个表达式的值取模一些素数。假设这个表达式的值为x,我选择素数1000000007;我在找x % 1000000007。
这是我的代码。
#include<iostream>
#define MOD 1000000007
using namespace std;
int main()
{
unsigned long long A[1001];
A[2]=2;
for(int i=4;i<=1000;i+=2)
{
A[i]=((4*A[i-2])/i)%MOD;
A[i]=(A[i]*(i-1))%MOD;
while(1)
{
int N;
cin>>N;
cout<<A[N];
}
}
但是对于较大的 N 值,即使如此多的优化也会失败。例如,如果 N 为 50,则正确的输出是 605552882,但这给了我 132924730。如何进一步优化以获得正确的输出?
注意:我只是将 N 视为偶数。
【问题讨论】:
-
根据答案,似乎没有什么可以改进此代码的。我将尝试改用其他公式。
标签: c++ math optimization modular-arithmetic