整数乘法

输入数据范围在long long范围内,但直接做乘法可能会爆

考虑采用快速乘,AC了

代码如下:

#include <bits/stdc++.h>
using namespace std;
#define ll long long

ll qmul(ll a,ll b,ll p){
    ll ans = 0,base = b;
    while(a){
        if(a&1) ans = (ans + base)%p;
        base = (base+base)%p;
        a >>= 1;
    }
    return ans;
}
int main(){
    ll a,b,p;
    cin>>a>>b>>p;
    cout<<qmul(a,b,p);
    return 0;
}