当模数是一个64位的整数时,乘法取模过程中就会溢出。
此时有两种解决方法
一种是采取与快速幂类似的思想,时间复杂度位$O(lg)$
1 | long long mul(long long x, long long y, long long M) |
还有一种是利用long double
来进行运算,有可能会计算错误,但时间复杂度是$O(1)$的
1 | long long mul(long long x, long long y, long long M) |
看起来很奇妙是不是?。。。玄学的一匹
摘自2009年国家集训队论文,骆可强:《论程序底层优化的一些方法与技巧》