取mod要注意什么问题?

P2679 [NOIP2015 提高组] 子串

这是不对的 ```cpp f[i%2][j][k][1]=f[(i-1)%2][j-1][k-1][1]%d+f[(i-1)%2][j-1][k-1][0]%d+f[(i-1)%2][j-1][k][1]%d; ```
by wangyansong @ 2020-11-26 08:50:13


运算规则:(a + b) % p = (a % p + b % p) % p 我觉得可能是加之前没到d加完到了,加之前好像也应该%一下,但是没到d就和没%一样(个人猜测)
by 显微镜 @ 2021-07-09 20:36:11


为了保险,应该每相加,必取模。 为了清楚些,我把你前后两个式子概括成 $R=(A+B)\%d+C$ ,和 $R=A\%d+B\%d+C\%d$ 那要保证不会错,应该用 $((A+B)\%d+C)\%d$. 想一想 3 个 $10^8$ 加起来,就明白了。所以严格说你的两个式子应该都是可能错的,只是这题有特殊的性质,或数据没有测到
by Mechanical_Melodies @ 2023-07-18 16:57:15


抱歉上面那个 $10^8$ 我的意思是 $10^9$
by Mechanical_Melodies @ 2023-07-18 16:57:53


|