快速求幂取模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;
	}
}

 

上一篇:MariaDB表表达式(2):CTE


下一篇:eNSP仿真软件之VLAN基础配置及Access接口