快速幂

对于n的规模,我们到达到logn,可以用分治的思想

经过logb次b就变为1

递归实现:

int quickpow(int a,int b,int c){
    if(b==1) return a;
    int t=quickpow(a,b>>1,c);
    if(b%2==0)    return t*t%c;
    else{
    t=t*t%c;
    return t*a%c;
  }
}

循环实现:

int quickpow(int a,int b,int c){
    int t=1;
    while(b){
        if(b%2==1) t=t*a%c;
        a=a*a%c;
        b=b/2;
    }
    return t;
}

 

posted @ 2019-02-25 20:49  YFR718  阅读(85)  评论(0编辑  收藏  举报