快速乘模板题
ac代码:
#include<iostream> using namespace std; typedef long long ll; ll a, b, p; ll mul(ll a, ll b, ll p){ ll ans = 0; //这和快速幂不一样,快速幂ans=1 while (b){ if (b & 1) ans = (ans + a) % p; //b&1可以取出b的最低位 a = (a+a)% p; //类似快速幂,将*改为+即可 b >>= 1; //舍去b的最低位 } return ans; } int main() { cin >> a >> b >> p; cout << mul(a, b, p) << endl; return 0; }