快速幂与快速幂取模

1.快速幂(位运算)

View Code
#include<stdio.h>
int pow(int a,int b)
{
    int r=1;
    int base=a;
    while(b!=0)
    {
        if(b&1)
        r*=base;
        base*=base;
        b>>=1;
    }
    return r;
}
int main()
{
    int m;int n;
    while(scanf("%d%d",&m,&n)!=EOF)
    {
        printf("%d\n",pow(m,n));
    }
    return 0;
}

2.快速幂取模

View Code
__int64 exp_mod(__int64 a, __int64 n, __int64 b)
{
    __int64 t;
    if(n==0) return 1%b;
    if(n==1) return a%b;
    t=exp_mod(a,n/2,b);
    t=t*t%b;
    if((n&1)==1) t=t*a%b;
    return t;
}

 

posted on 2013-04-29 13:39  Fray  阅读(179)  评论(0编辑  收藏  举报

导航