前言
快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。
C++的实现方式:
先笔记一下:
b & 1 //取b二进制的最低位,判断和1是否相同,相同返回1,否则返回0,可用于判断奇偶(偶数二进制结尾是0奇数是1) b>>1 //把b的二进制右移一位,即去掉其二进制位的最低位 就是b=b/2
递归的方式
long long pow(long long a,long long b){ if (b==0) return 1; long long temp=pow(a,b>>1); temp=temp*temp%MOD; if (b&1) temp=temp*a%MOD; return temp%MOD; }
非递归的方式
long long power(long long a,long long b){ long long t=1,y=a; while(b){ if (b&1==1) t=t*y%k; y=y*y%k; b=b/2; } return t; }
文章评论