分治算法求乘方a^b 取余p(divide and conquer)
传统的计算方法为循环n个a相乘。时间复杂度为O(n)。
如用分治算法,效率可提升至O(lgn)。

结合recursive有
double pow(int a, int n){ if(n==0) return 1; if(n==1) return a; double t = pow(a,n/2); return t * t * pow(a,n%2); }
也可用循环的方法
double pow(int a, int n){ double res = 1; while(n){ if(n%2==1) res =res * a; a = a* a; n/=2; } }

浙公网安备 33010602011771号