经常会有些恶心人的题把模数开到10^18那么大来恶心人。
此时如果直接相乘long long肯定是存不下的,打个小高精度代码又有些繁琐且容易写错,在这里提供两种便捷的办法。
###第一种:
快速加,众人皆知,原理与快速幂类似,打法也十分类似。
Code:
ll ksj(ll x, ll y) {
ll s = 0;
for(; y; y /= 2, x = x * 2 % mo)
if(y & 1) s = (s + x) % mo;
return s;
}
###第二种:
这是我从《算法竞赛进阶指南》里看的的做法。
InFleaKing说这个东西经过了对拍的考验。
原理是这样的:
x ∗ y m o d m o x*y~mod~mo x∗y