快速幂,快速乘 及 欧拉降幂

【快速幂】

  • a b m o d    c a^b\mod c abmodc
long long qpow(long long a,long long b,long long c)   //(a^b)%c
{
    long long res=1;
    while(b)
	{
        if(b&1)    //若b为奇数
            res=(res*a)%c;
        a=(a*a)%c; //a平方
        b>>=1;     //b除2
    }
    return res;
}


【快速乘】

  • a × b m o d    c a\times b\mod c a×bmodc

主要针对于 两个long long 范围的数相乘取模,但是 可能相乘结果会爆long long 的情况,则以快速乘来代替一般乘法(思想与快速幂相似)

long long qmul(long long a,long long b,long long c)   //a*b%c
{
    long long res=0;
    while(b)
    {
        if(b&1)      //若b为奇数
            res=(res+a)%c;
        a=(a<<1)%c;  //a乘以2
        b>>=1;       //b除以2
    }
    return res;
}


【欧拉降幂】

a b ≡ { a b m o d    φ ( m ) g c d ( a , m ) = 1 a b g c d ( a , m ) ≠ 1 ∧ b < φ ( m ) a b m o d    φ ( m ) + φ ( m ) gcd ⁡ ( a , m ) ≠ 1 ∧ b ≥ φ ( m )      ( m o d m ) a^b\equiv\begin{cases} a^{b\mod \varphi(m)}&&gcd(a,m)=1\\ a^{b}&&gcd(a,m)\neq1\land b\lt \varphi(m)\\ a^{b\mod \varphi(m)+\varphi(m)}&&\gcd(a,m)\neq1\land b\ge \varphi(m) \end{cases}\;\;\pmod m ababmodφ(m)ababmodφ(m)+φ(m)gcd(a,m)=1gcd(a,m)̸=1b<φ(m)gcd(a,m)̸=1bφ(m)(modm)

你可能感兴趣的:(★Tips,★数学,#,【数论】)