Implement pow(x, n).
很有趣的题,第一次暴力乘了,超时。然后就想到多项式分解了,想到二进制,想到了取次数相当于二进制遇“0”不管,遇“1”乘x,移位取平方。
代码测试后出现负次数没有过,加了这部分代码就过了。
代码不难,优化只需要小动脑,还是挺好玩的。
| 
       1 
      2 
      3 
      4 
      5 
      6 
      7 
      8 
      9 
      10 
      11 
      12 
      13 
      14 
      15 
      16 
      17 
      18 
      19 
      20 
      21 
      22 
      23 
      24  | 
    
      class 
Solution {public:    double 
pow(double 
x, int 
n) {        double 
result =1;        int 
flag = 0;        if(n<0)flag =1;        n= abs(n);        stack<int> sk;        while(n>0)        {            sk.push(n%2);            n = n/2;        }        while(!sk.empty())        {            result *= result;            if(sk.top() == 1) result *= x;            sk.pop();        }        if(flag ==1)        result =1/result;        return 
result;    }}; | 
原文:http://www.cnblogs.com/pengyu2003/p/3595181.html