P1226 【模版】快速幂

快速幂是一种很有用的算法,可以将程序时间从n缩短为log2(n)。

原理:

x为偶数时:a^x==a^(x/2)*a^(x/2)

x为奇数时:a^x==a*a^(x-1/2)*a^(x-1/2)

本题注意指数奇偶,若为奇数,需要单独拆出一个底数,偶数的话直接劈开。

记得取模!!不然会WA ~  qwq

AC代码:

#include
int main(){
	long long int a,b,ans,l,m,p;
	a=0;b=0;ans=1;
	scanf("%lld %lld %lld",&l,&m,&p);
	a=l;
	b=m;
	while(b>0){
		if(b%2==1){
			ans=ans*a;
			ans=ans%p;
		}b=b/2;
		a=a*a;
		a=a%p;
	}
	printf("%lld^%lld mod %lld=%lld",l,m,p,ans);
	return 0;
}

你可能感兴趣的:(算法,数据结构)