C快速幂

Posted decimus

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C快速幂相关的知识,希望对你有一定的参考价值。

快速幂代码如下:

int me(int a,int b)//传入a的b次方 

    int ans=1;
    
    while(b!=0)
    
        if(b&1==1)
        
            ans*=a;
        
        a*=a;
        b=b>>1;
    
    
    return ans;

以3的11次方为例。

则a=3,b=11

将11用二进制表示,11(2)=1011,可以将11拆解为20+21+23

3的11次方可以表示为3^(20+21+23

3的三次方拆解为3^(20)·3^(21)·3^(23

用位运算&1得出3末尾的二进制数,>>=1右移一位,逐个取得3的每一位二进制数进行计算。

a*a的意义:31→32→34→38→316→332→...

 

以上是关于C快速幂的主要内容,如果未能解决你的问题,请参考以下文章

Prime Number(CodeForces-359C)[快速幂/思维]

快速幂(快速幂取余)

转C语言快速幂取模算法小结

51Nod 1046 A^B Mod C Label:快速幂

总结矩阵快速幂

快速幂