/*
快速幂 大大提高幂运算效率 原理与二进制有关
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<stack>
#include<queue>
#include<vector>
using namespace std;
#define MM 1000000007
int pow3(int a,int b) //1011 = 11 复杂度log2(N)
{
int r=1,base=a;
while(b!=0)
{
if(b&1) //b不为偶数
r*=base;
base*=base;
b>>=1; //b除以2
}
return r;
}
long long pow4(long long a,long long b) //配合模的运算
{
long long r=1,base=a;
while(b!=0)
{
if(b&1) //b不为偶数
{r*=base;r%=MM;}
base*=base;
base%=MM;
b>>=1; //b除以2
//r%=MM;
}
return r;
}
int main()
{
cout<<pow3(2,3)<<endl;
cout<<pow3(4,3)<<endl;
cout<<pow3(3,2)<<endl;
cout<<pow3(5,2)<<endl;
return 0;
}
快速幂模板
最新推荐文章于 2024-05-06 20:56:34 发布