/*设b[k]b[k-1]...b[1]b[0]是整数n的二进制表示。
利用二进制求幂,时间复杂度为O(logn)
*/
#include <iostream>
using namespace std;
typedef int Type;
Type Exponentiate(Type x, int n)
{//Return x 的幂 for an integer n>=0
int m = n;
Type power = 1, z = x;
while (m > 0)
{
while (m%2 != 0)
{
m /= 2;
z *=z;
}
m--;
power *= z;
}
return power;
}
int main()
{
cout << Exponentiate(2 , 5) << endl;
return 0;
}