64位整数乘法

 注意啊,这是a * b % p,之前的快速幂是a ^ b % p,还有这道题的a,b,p都是10 ^ 18数量级的。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 ll qmi(ll a, ll b, ll p) {
 5     ll res = 0;
 6     while (b) {
 7         if (b & 1) {
 8             res = (res + a) % p;
 9         }
10         a = (a * 2) % p;
11         b >>= 1;
12     }
13     return res;
14 }
15 int main() {
16     ll a, b, p;
17     cin >> a >> b >> p;
18     cout << qmi(a, b, p) << endl;
19     return 0;
20 }
原文地址:https://www.cnblogs.com/fx1998/p/13885673.html