快速幂

快速幂模板

#include<iostream>
#include<cstdio>
#define MOD 100007
#define ll long long
using namespace std;

inline int read(){
   int s=0,w=1;
   char ch=getchar();
   while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
   while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
   return s*w;
}

ll m,n;

ll ksm(ll a,ll b){
	if(b==0) return 1;
	ll t=ksm(a,b/2);
	ll tmp=t*t%MOD;
	if(b%2==1){
		return tmp*a%MOD;
	} else {
		return tmp%MOD;
	}
}

ll ksm2(ll a,ll b){
	ll ret=1;
	while(b){
		if(b%2==1) ret=ret*a%MOD;
		a=a*a%MOD;
		b=b/2;
	}
}

int main(){
	cin>>n>>m;
	return 0;
}

方法一:递归

\(a^b=(a^{b/2})^2*(a或者1)\)

方法二:循环

\(a^b=(a^2)^{b/2}*(a或者1)\)

posted @ 2021-08-03 10:35  ICtiger  阅读(22)  评论(0)    收藏  举报