首页 > 其他分享 >快速幂的写法

快速幂的写法

时间:2022-10-06 20:33:25浏览次数:38  
标签:return int 写法 else res res% 快速 mod

1:

//注意事先请#define int long long,防止数据溢出
int f(int A,int B) { if(B==0) return 1; else if(B%2==0) { //如果B是偶数,则将其分成相等的两份 //于是可以先算出一份的结果,然后再乘上自身即可 //这样的写的话,递归调用的少了许多 int res=f(A,(B>>1)); return res*res%mod; } else { //与上同理,分成大小相差为1的两份 int res=f(A,(B>>1)); return A*res%mod*res%mod; } }

 

2:用while循环来写,更简单

 

 

 

3:如果是下面这样写,存在冗余。

int f(int a,int b)
{
 
	if(b==0)return 1;
	if(b==1) return a;
	if(b%2==0)
	    return f(a,b>>1)*f(a,b>>1)%mod;
	else
	    return a*f(a,b>>1)%mod*f(a,b>>1)%mod;
}

  

标签:return,int,写法,else,res,res%,快速,mod
From: https://www.cnblogs.com/cutemush/p/16758412.html

相关文章