快速幂快速乘

pow()返回double,有精度误差

1.快速幂

 1 LL qpow(LL a,LL b,LL MOD)   //pow(a,b)%MOD
 2 {
 3     LL ret=1;
 4     while (b)
 5     {
 6         if (b & 1) ret=(ret*a)%p;
 7         a=(a*a)%p;
 8         b>>=1;
 9     }
10     return ret;
11 }

2.快速乘

 1 LL qmul(LL a,LL b,LL MOD)   //计算a*b%MOD
 2 {
 3     LL ret=0;
 4     while (b)
 5     {
 6         if (b & 1) ret=(ret+a)%MOD;
 7         a=(a+a)%MOD;
 8         b>>=1;
 9     }
10     return ret;
11 }

 

posted @ 2021-12-04 22:11  Hell0er  阅读(24)  评论(0编辑  收藏  举报