求对取模的值
先不考虑
类似于快速幂的思想,
因此:
也就是说如果的第位是,那么就等于;如果是,那么就等于
又有,而(表示向上取整),故时间复杂度为
所以每次取中的位(),每次都乘(),如果的这一位是就累加到中。
利用(其中表示向下取整)
记为,为
问题有个,一是如何计算出,而是如何计算
因为在十进制下的有效数字有~位,当时也一定小于。所以可以胜任,再把结果强制转换为即可。由此计算。
因为其实就是,所以,又因为溢出时相当于对自动取模,所以由此计算。
时间复杂度为