禁食猴人
查看原帖
禁食猴人
1160620
MutU楼主2024/11/27 09:35

记录一

这是我第一次提交,其中第 2222 行的

f[i][j] = (sumf[i-1][j-1] + sumk[i-1][j-1]*(i*i+j*j+2) - sumx[i-1][j-1]*2*i - sumy[i-1][j-1]*2*j + sumt[i-1][j-1])%mod;

以及第 2929 行类似的地方可能爆 long long

于是改成这样

f[i][j] = (sumf[i-1][j-1] + sumk[i-1][j-1]*(i*i+j*j+2)%mod - sumx[i-1][j-1]*2*i - sumy[i-1][j-1]*2*j + sumt[i-1][j-1])%mod;

在可能爆的地方取一次模。

于是 记录二

然后调了我 0.5h0.5h..

注意到根据定义,这个式子算出来的值一定是正数,在结尾取模之后亦然。

但是在式子中间取模后再做减法,可能减出负数!

例如,103=710-3=7,但 1010 % 97=69-7=-6

所以需要考虑对负数取模,如下

f[i][j] = (sumf[i-1][j-1] + sumk[i-1][j-1]*(i*i+j*j+2)%mod - sumx[i-1][j-1]*2*i - sumy[i-1][j-1]*2*j + sumt[i-1][j-1])%mod;
f[i][j] = (f[i][j]+mod)%mod;

这样就过了 记录三

2024/11/27 09:35
加载中...