我正在尝试计算下面的大数表达式。
由于这个表达式的值会很大,我只需要这个表达式的值取模一些素数。假设这个表达式的值为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 是偶数。