多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
快速幂,顾名思义,快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。 以a^b为例,假设b=11,则 因为11的二进制为1011,11=2^0 +21+23,所以可得上式。 所以我们只要判断幂的二进制的值,就可以计算在log()级别的时间求解出答案。 ~~~ int mod; int mulpow(int a,int n){//求a^n int res=1; while(n>0){ if(n&1) res=res*a%mod;//如果当前位为1,则进行计算 a=a*a%mod;//a^(2^i),i为循环次数 n/=2; } return res; } ​ ~~~ 函数中间的运算数可能超过int的范围,所以当我们使用时要注意数据范围而选取适当的数据类型(int,long long)。