快速幂取模

原创 2015年07月09日 15:20:02



用二分,使复杂度由 O(n) 变为 O(logn)



#include<iostream>
#include<cstdio>
using namespace std;
/// (b^n)mod m;  (a*b mod m) = (a mod m)*(b mod m)mod m       O(log n)
/// (b^n)mod m;  (a - b ) mod m =( (a mod m)-(b mod m) + n ) mod m  )      O(log n)
/// (b^n)mod m;  (a + b ) mod m =( (a mod m)+(b mod m) mod m  )       O(log n)
int mod(int b,int n,int m) // 位运算
{
    int ans=1;
    while(n){
        if(n&1)
            ans=(ans*b)%m;
        b=(b*b)%m;
        n=n>>1;
    }
    return ans;
}

int mod_1(int b,int n,int m) //  O(log n) 递归
{
    if(n==0) return 1;
    int x=mod_1(b,n/2,m);
    long long ans=(long long)x*x%m;
    if(n%2) ans=ans*b%m;   /// n&1
    return (int)ans;
}

int main()
{
    int b,n,m;
    while(scanf("%d%d%d",&b,&n,&m))
    {
        printf("%d  ",mod(b,n,m));
        printf("%d\n",mod_1(b,n,m));
    }
    return 0;
}
/**

12996 227 37909  == 7775


*/


版权声明:本文为博主原创文章,未经博主允许不得转载。

hdu4675——GCD of Sequence(莫比乌斯反演+组合数取模+乘法逆元+快速幂)

GCD of Sequence Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)...

hdu2035 人见人爱A^B(快速幂取模)

题目链接:hdu 2035 人见人爱A^B       很早的时候做的一道题了,今天想想把他翻了出来,写篇文章来为不知道快速幂的同学做一个科普(请允许我吹一下牛逼)。快速幂可以高效的计算幂运算。如果我...

HDU 5363 Key Set【快速幂取模】

Key Set Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Tota...

组合数取模(逆元+快速幂)

Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu   LightOJ 1067   ...
  • lu_1110
  • lu_1110
  • 2016年08月08日 14:24
  • 1258

HDU 4365 正方形格子涂色中心对称轴对称的涂法有多少种-思维-(矩阵坐标关系&快速幂取模)

题意:n*n的格子,涂色,有k种颜料,必须满足旋转任意个90度和翻转之后图片的样子不变,现在已经有m个格子涂过色了,问还有多少种涂法满足上述条件。 分析: 满足上述对称条件,那么涂色的种类问题我们...

快速幂取模问题

快速幂取模:就是求a^bMODc (这就是著名的RSA公钥的加密方法) 因为当AB很大的时候直接求这个问题会在时间和空间上消耗很大 对此类问题我们可以采用以下几种做法: 在这里我随便...

HDU 5363(2015多校6)-Key Set(快速幂取模)

题目地址:HDU 5363 题意:给你一个具有n个元素的集合S{1,2,…,n},问集合S的非空子集中元素和为偶数的非空子集有多少个。 思路:解释转自[queuelovestack的专栏]因为集合...

快速幂取模模板算法

快速幂取模算法

青橙OJ A1357 矮人砍树 组合 + 快速幂取模

题目:http://www.tsinsen.com/A1357

HDU4506 小明系列故事——师兄帮帮忙(快速幂取模)

小明系列故事——师兄帮帮忙 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:快速幂取模
举报原因:
原因补充:

(最多只允许输入30个字)