【模板】快速乘/快速幂

inline long long fpro(long long x,long long y,long long p)
{
    long long z=(long double)x/p*y;
    long long res=(unsigned long long)x*y-(unsigned long long)z*p;
    return (res+p)%p;
}

 

inline long long fpro(long x,long long y,long long mod)
{
    long long res=0;
    while(y)
{
        if(y&1)res=(res+x)%mod;
        x=(x<<1)%mod; y>>=1;
    }return res;
}
inline int fpow(int a, int n, int mod) 
{
    if (n == 0)        return 1;
    else if (n & 1) return a * fpow(a, n - 1, mod) % mod;    
    else
    {
        int num = fpow(a, n / 2, mod) % mod;
        return num * num % mod;
    }    
}

 

posted on 2019-10-11 20:36  thjkhdf12  阅读(126)  评论(0)    收藏  举报