快速幂

快速幂:

int pow(int a,int n)
{
    int rs=1;
    while(n)
    {
    if(n&1)
      rs=rs*a;
    a=a*a;
    n=n>>1;
  }
  return rs;

}

快速幂取余:

//求a^b%n,O(logb)
__int64 get_mi_mod(__int64 a,__int64 b,int n)
{
    if(0 == a)
        return 0;
    if(0 == b)
        return 1;
    __int64 rs=1;
    while(b)
    {
        if(b&1)
            rs=(rs*a)%n;
        a=(a*a)%n;
        b>>=1;
    }
    return rs;
}


原文地址:https://www.cnblogs.com/SBSOI/p/5575057.html