数论——快速幂(C++)

源代码:

#include<cstdio>
int m,n,q,ans=1;
int main()
{
    scanf("%d%d%d",&m,&n,&q); //m的n次方,对q的取余运算。
    m%=q; //为避免m*m率先溢出,首当其冲,对其进行取余运算。
    while (n)
    {
      if (n&1)
        ans=ans*m%q;
      n=n>>1; //位运算。
      m=m*m%q;
    }
    printf("%d",ans);
    return 0;
}
原文地址:https://www.cnblogs.com/koruko/p/5185849.html