其他分享
首页 > 其他分享> > 快速幂

快速幂

作者:互联网

快速幂

快速幂思想主要时求a^2^1-logk次方然后再将k组合出来,这就只要看k的二进制了,此位上为1我就要加上这以为的的二进制

比如4^5,5的二进制位101那么

$$
4^5=4^{2^0+2^2}
$$

这样就只要要求1-logk就可以l求出a^k了,和背包的01优化有点像。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll qpow(ll a,ll k,ll p){
ll res=1;
while(k){
if(k&1) res=res*a%p;
k>>=1;
a=a*a%p;
}
return res;
}
int main(){
ll a,k,p;
cin>>a>>k>>p;//a^k%p;
cout<<qpow(a,k,p);
}

image-20220628175337756

标签:a%,二进制,res,ll,long,快速,logk
来源: https://www.cnblogs.com/silky----player/p/16519250.html