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;
}
posted @ 2019-01-20 00:05  INnoVation-V2  阅读(113)  评论(0编辑  收藏  举报