在ACM比赛中,有很多时候会遇到大数取模问题:
比如,我们要求一个数的阶乘对某数取模的结果,或者斐波那契数列中后面的项对某个数取模的结果,这些数用int或者long long是存不下的。为了防止溢出,取模问题有以下几个公式。
1.两数相加再取模
(m + n) % p = (m%p + n%p) %p
2.两数相乘再取模
(m * n) % p = (m%p) * (n%p) %p
3.两数相减再取模
(m - n) % p = ((m%p - n%p) + p) %p
对于上面的公式,在三个数及以上的时候也可以使用,用法因具体情况而异。