Я пытаюсь рассчитать приведенное ниже выражение для больших чисел.
Поскольку значение этого выражения будет очень большим, мне просто нужно значение модуля этого выражения какое-то простое число. Предположим, что значение этого выражения равно 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 четным.