zoukankan      html  css  js  c++  java
  • 【模板】快速幂

    思想

    [a^{b}=egin{cases}a^{frac {b}{2}} imes a^{frac {b}{2}}qquad amod b==0\ a^{frac {b}{2}} imes a^{frac {b}{2}} imes aqquad amod b==1end{cases} ]

    为了防止溢出,通常会进行取模操作(下文n即是模数)。

    时间复杂度

    [O(log n) ]

    代码(递归、非递归)

    typedef long long ll;
    ll quickpow(ll a,ll b,ll n){
    	if(b==1) return a;
    	if(b%2==0){
    		ll t=quickpow(a,b/2,n);
    		return t*t%n; 
    	}
    	else{
    		ll t=quickpow(a,b/2,n);
    		t=t*t%n;
    		t=t*a%n;
    		return t;
    	}
    }
    
    int quickpow(int a,int b,int n){
        int ret=1;
        while (b)
        {
            if(b%2==1) ret = ret*a%n;
            a=a*a%n;
            b>>=1;
        }
        return ret;
    }
    
  • 相关阅读:
    java web
    java web
    java
    周末总结7
    java
    java
    java
    java
    java web
    java
  • 原文地址:https://www.cnblogs.com/FirwoodLin/p/12363102.html
Copyright © 2011-2022 走看看