快速幂取模

来源:互联网 发布:好看的网络剧霸道总裁 编辑:程序博客网 时间:2024/04/30 23:27


快速幂算法


代码:

// m^n % kLL quickpow(LL m, LL n, LL k){    LL ans = 1;    while(n > 0)    {        if(n & 1)            ans = (ans*m)%k;        n = n >> 1 ;        m = (m*m)%k;    }    return ans;}

借鉴:

比如a的b次方对c求模
我们可以把b 化为二进制形式看哪一位有1
比如b=10101则 a^b=a^(10000)*a^(100)*a^(1)

//a^b mod c=(a mod c)^b mod cLL binarypowmod(LL a, LL b, LL c){    LL t,s;    for(t=a,s=1; b; b>>=1,t*=t,t%=c)    {        if(b&1)        {            s*=t;            s%=c;        }    }    return s%c;}


1 0
原创粉丝点击