算法之快速幂

朴素的求幂算法

int Pow(int a,int b){
    
    
    int ans = 1;
    for(int i = 0;i < b;i++){
    
    
        ans *= a;
    }
    return ans;
}

快速幂

int Pow(int a,int b){
    
    
    int ans = 1;
    int base = a;
    while(b){
    
    
        if(b & 1) ans *= base;
        base *= base;
        b >>= 1;
    }
    return ans;
}

快速幂取模

int pow_mod(int a,int b,int c){
    
    
    int ans = 1;
    int base = a%c;
    while(b){
    
    
        if(b & 1) ans = (ans*base)%c;
        base = (base*base)%c;
        b >>= 1;
    }
    return ans;
}

猜你喜欢

转载自blog.csdn.net/qq_52297656/article/details/119840948