其他分享
首页 > 其他分享> > 快速求幂取模c语言

快速求幂取模c语言

作者:互联网

最近做了一个关于幂取模的题目,起初本来是想用pow函数,但后来发现使用pow函数会出现精度缺失的情况,然后就尝试寻找其他的方法。

第一种:直接法

int mypow(int a,int b,int c){
	a=a%c;
	int ans=1;
	while(b--){
	ans=(ans*a)%c;	
	}
} 

第二种:递归法

int mypow(int a,int b,int c){
	a=a%c;
	if(b==0){
		return 1;
	}else{
		return (a*mypow(a,b-1,c))%c
	}
}

第三种:快速求幂取模法

int mypow(int a,int b,int c){
	a=a%c;
	int ans=1;
	while(b!=0){
	if(b%2==1){
		ans=(ans*a)%c;
	}	
	b/=2;
	a=(a*a)%c;
	}
}

位运算:

int mypow(int a,int b,int c){
	a=a%c;
	int ans=1;
	while(b>0){
		if(b&1){
		ans=(ans*a)%c;	
		}
		b>>=1;
		a=(a*a)%c;
	}
}

 

标签:取模,a%,语言,求幂,mypow,int,pow,while,ans
来源: https://www.cnblogs.com/ctt12345678/p/15733261.html