今天给大家讲一下快速幂。
快速幂即计算pow(m,n),时间复杂度为O(log₂N),防止了超时。
重点是记住:一个数A与另一个数B的乘积,取余就等于A和B的各自取余相乘。
直接上题:
描述
给出两个正整数A和B
请输出A的B次幂
结果可能很大,请对1000000007求模
输入
A和B,两个整数均不大于10^18
输出
A的B次幂对1000000007求模
样例输入1
2 2
样例输出1
4
样例输入2
2 10
样例输出2
1024
本人代码:
#include<stdio.h>
int main ()
{
long long n,m,i,ans=1;
scanf("%lld%lld",&n,&m);
n=n%1000000007;
while(m>0)
{
if(m%2==1)
ans=(ans*n)%1000000007;
n=(n*n)%1000000007;
m=m/2;
}
printf("%lld\n",ans);
return 0;
}
如果有错请留言评论。