标签:type pow span amp return 三次 nbsp 二分 快速
快速幂可真是一个好东西
我觉得和高精度,或者快速幂模搭配
首先
快速幂是利用二进制表示指数,利用二分的思想来进行幂的运算
a^11=a^(1*2^0+1*2^1+0*2^2+1*2^3)
typedef long long LL; LL quick_pow(int n,int x){ LL ans=1,base=n; while(x){ if(x&1) ans*=base; base*=base; x/=2;//x>>=1; } return ans; }
就是底数不断地从a*2^0->a*2^1->a*2^2
而是否让ans*当前底数取决于当前指数的二进制最后一位,例如
11的二进制表示为1011,
第一次为1,√
第二次为1,√
第三次为0,×
第四次为1,√
表示就是if(x&1),表示最后一个是否为1,&是且操作
而base*base就是底数的不断上升
最后return ans即可
标签:type pow span amp return 三次 nbsp 二分 快速
原文地址:https://www.cnblogs.com/rign/p/9983718.html