快速幂
先上代码:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const ll p=1e9+7;
ll quickpow(ll a,ll b)
{
ll t=1;
while(b)
{
if(b&1) t=t*a%p;
a=a*a%p;
b>>=1;
}
return t;
}
int main()
{
ll x,y;
scanf("%lld%lld",&x,&y);
printf("%lld\n",quickpow(x,y));
return 0;
}
什么意思呢?首先我们知道, 212=(26)2=((23)2)2=((22×21)2)2=(((21)2×21)2)22^{12} = (2^6)^2 = ((2^3)^2)^2=((2^2 \times 2^1)^2)^2=(((2^1)^2 \times 2^1)^2)^2212=(26)2=((2

215

被折叠的 条评论
为什么被折叠?



