klitech

分治算法求乘方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;  
    }
}

 

分类:

技术点:

相关文章:

  • 2021-12-18
  • 2022-12-23
  • 2021-12-04
  • 2019-08-13
  • 2021-10-06
  • 2021-10-02
  • 2022-12-23
  • 2022-02-13
猜你喜欢
  • 2021-05-18
  • 2021-10-03
  • 2022-12-23
  • 2021-04-13
  • 2022-12-23
  • 2022-01-10
  • 2021-09-14
相关资源
相似解决方案