记录一
这是我第一次提交,其中第 22 行的
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;
以及第 29 行类似的地方可能爆 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.5h..
注意到根据定义,这个式子算出来的值一定是正数,在结尾取模之后亦然。
但是在式子中间取模后再做减法,可能减出负数!
例如,10−3=7,但 10 % 9−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;
这样就过了 记录三