我需要减去两个非常大的整数以及模数1000000007
x和y是整数1 <= x,y <= 1000
long long s[x+1];
long long c[x+1];
for(int i=1;i<=x;i++)
c[i] = power(y,i)%mod;
s[1]=1;
for(int i=2;i<=x;i++){
sum=0;
for(int j=1;j<i;j++){
sum = (sum + (s[j]*c[i-j]%mod))%mod;
}
s[i] = (c[i] - sum)%mod; // <----------- s[i] is -ve
}
问题是c[i]%mod
小于Sum%mod
例如:当c [i]大于Sum时。
但c[i]%mod
小于Sum%mod
437001927 - 952742480
答案 0 :(得分:1)
您只需添加if
语句。
if(s[i]<0)
s[i] += mod
答案 1 :(得分:1)
我会用
s[i] = (c[i] - sum + mod) % mod;
在这种情况下。 sum
以模mod
为模计算,因此不能大于mod
。