注意啊,这是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 }