64位整数乘法

题目描述

取模的值

问题分析

先不考虑

方法一

类似于快速幂的思想,

因此:

也就是说如果的第,那么就等于;如果,那么就等于

又有,而表示向上取整),故时间复杂度为

所以每次取中的位(),每次(),如果的这一位是累加中。

方法二

利用(其中表示向下取整)

问题有个,一是如何计算出,而是如何计算

因为在十进制下的有效数字有~位,当也一定小于。所以可以胜任,再把结果强制转换为即可。由此计算。

因为其实就是,所以,又因为溢出时相当于对自动取模,所以由此计算。

时间复杂度为