64位整数乘法

a * b mod p可以转换为 (a+a+a+a+.......+a) mod p
即为处理
a
2a
4a
8a
..........

#include<iostream>
using namespace std;
int main(){
   long long a,b,p;
   cin>>a>>b>>p;
   long long ans = 0;
   a%=p;
   while(b){
       if(b&1) ans = (ans+a)%p;
       a = a * 2 % p;
       b>>=1;
    }
    cout<<ans<<endl;
    return 0;
}
原文地址:https://www.cnblogs.com/INnoVationv2/p/10293801.html