其他分享
首页 > 其他分享> > QQQ快速幂

QQQ快速幂

作者:互联网

很显然超时了

//平方次数要考虑0次; 
#include<stdio.h>
typedef long long ll;
int main()
{
	ll a,b,p;
	scanf("%lld %lld %lld",&a,&b,&p);
	if(b==0) printf("%lld\n",1%p); 
	else 
	{
		for(int i=1;i<b;i++){
		a*=a;
		a%=p;
		}
		printf("%lld\n",a%p);
	}
	return 0;
 } 

优化之后的 

//平方次数要考虑0次; 
//学习了位运算>>   <<
#include<stdio.h>
typedef long long ll;
ll a,b,p,res=1;
int main()
{
	scanf("%lld %lld %lld",&a,&b,&p);
	if(b==0) printf("%lld\n",1%p); 
	else 
	{
		while(b){
			if(b&1) res=res*a%p;
			a=a*a%p;
			b>>=1;	
		}
	printf("%lld\n",res%p); 		
	}
	return 0;
 } 

标签:int,res,ll,long,QQQ,printf,快速,lld
来源: https://blog.csdn.net/qq_60755126/article/details/122148232