快速幂

ll ksm(ll a,ll n)
{
    ll rec=1;
    while(n)
    {
        if(n&1)
            rec=rec*a%mod;
        a=a*a%mod;
        n>>=1;
    }
    return rec%mod;
}

快速乘+快速幂

ll ksc(ll x,ll y) //计算x乘y的积
{
    ll res=0;//加法初始化
    while(y)
    {
        if(y&1)
            res=(res+x)%mod;//模仿二进制
        x=(x<<1)%mod;
        y>>=1;//将x不断乘2达到二进制
    }
    return res;
}
ll ksmm(ll a,ll n)
{
    ll rec=1;
    while(n)
    {
        if(n&1)
            rec=ksc(rec,a)%mod;
        a=ksc(a,a)%mod;
        n>>=1;
    }
    return rec%mod;
}

一个好奇的人