当前位置 博文首页 > 是哆啦D梦的博客:快速幂与慢速乘以及特殊类
递归原理 ab=ab/2ab/2(a)
long long ksm(long long a,long long b){
if(b==1)return a;
long long t=ksm(a,b/2);
if(b%2)return t*t*a%p;
else return t*t%p;
}
递推原理 ab=(a*a)b/2(a)
long long ksm(long long a,long long b){
long long x=1;
while(b){
if(b%2)x=x*a%p;
a=a*a%p;
b/=2;
}
return x;
}
b过大怎么办
慢速乘!!!
long long mul(long long a,long long b,long long p=1e9+7){
long long res=0;
while(b){
if(b%2)res=(res+a)%p;
a=(a+a)%p;
b/=2;
}
return res;
}
int main(){
long long a,b;
cin>>a>>b;
cout<<mul(a,b);
return 0;
}
cs