我计算的金额如下:
(ax+m_ax-1+2m_ax-2+3m*ax-3+.)%MOD (MOD=1e9+7)
为此,我使用这个循环。
long long mulmod(long long a,long long b,long long c)
{
if (a == 0 || b == 0)
return 0;
if (a == 1)
return b;
if (b == 1)
return a;
long long a2 = mulmod(a, b / 2, c);
if ((b & 1) == 0)
{
return (a2 + a2) % c;
}
else
{
return ((a % c) + (a2 + a2)) % c;
}
}
res=a[x]%MOD;
for(i=x-1;i>=1;i--)
res=(res%MOD+mulmod(mulmod(x-i,m,MOD),a[i],MOD))%MOD;但是,这仍然会给我带来溢出错误。基本错误,我猜是在(a_b_c)%MOD中。
谢谢。
发布于 2016-02-05 20:53:20
为了避免溢出,您需要将以下模块算术标识合并到程序中:
(A + B + ...) mod C = (A mod C + B mod C + ... mod C) mod C
和
(A * B * ...) mod C = (A mod C * B mod C * ... mod C) mod C
https://stackoverflow.com/questions/35231707
复制相似问题