-->
当前位置:首页 > 题库 > 正文内容

编程题:h0090.64位整数乘法

Luz3年前 (2022-09-24)题库505
求 a 乘 b 对 p 取模的值。



### 输入格式:

第一行输入整数a (1≤a),第二行输入整数b (1≤b),第三行输入整数p (p≤10^18)。

### 输出格式:

输出一个整数,表示a*b mod p的值。



### 输入样例:

在这里给出一组输入。例如:

in
3
4
5



### 输出样例:

在这里给出相应的输出。例如:

out
2







答案:若无答案欢迎评论

(二进制思想) O(logn)
如果直接计算a乘b这会超过 long long 的最大范围,所以采用类似于快速幂的思想
把 b写成二进制形式,然后如果某位上为1就加上它a*(2^n)次方(n与这位的位置有关)
并且每次计算后取模就可以了
例:计算 3*7
7的二进制 111
3*(2^0)=3
3*(2^1)=6
3*(2^2)=12

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。