一、r = a % b 的计算步骤
计算出a的绝对值被 b的绝对值除所得的余数,再使该余数的符号与a保持一致。
即:r 与b的符号没有直接关系,r的绝对值属于[0,b-1]
二、修正余数,使为正
使得余数范围落在0至b-1
对a%b取得的余数 加上除数后再对该和求模,即新余数为: r'=(r+b)%b
原理: 以下均满足余数定义,为了避免当旧余数 r 为零时,(r+b)为除数b,再模b,这样不仅对可能出现的负余数做了适当的修正,同时对出现的零和正余数也不改变其值
a=k*b+r
a=(k-1)*b+(r+b) //r可能为零,从而导致(r+b)不属于[0,b-1]
三、运算规律
(a*b) % c = ( a%c * b%c ) % c
(a+b) % c = ( a%c + b%c ) % c
牢记公式,可以避免大数求模中的溢出问题