use MathJax to parse formulas
Description
問題很簡單,求x^n.請編寫pow()函數.
聲明如下:
int pow(int x,int n,int p)
//pow的功能是實現x^n,最后1個參數p沒有用。
系統會自動在程序的最后加上如下代碼:
int main()
{
int x,n;
scanf("%d %d",&x,&n);
printf("%d\n",pow(x,n,1));
return 0;
}
Input
x和n 0 < x,n < 2^31-1
Output
x^n .最后結果小於 2^31-1
Sample Input
2 3
Sample Output
8
Hint
加上相應的頭文件,並實現函數
int pow(int x,int n,int p)
O(logn)
思路:根據2進制來算 比如說2的13次方 13是1101 可以算成2的8次方乘以2的4次方乘以2的1次方
#include <stdio.h>
int pow(int x,int n,int p)
{
int ans=1;
if(n==0)
return 1;
while(n!=0)
{
if(n%2==1)
ans*=x;
n/=2;
x*=x;
}
return ans;
}
int main()
{
int x,n;
scanf("%d %d",&x,&n);
printf("%d\n",pow(x,n,1));
return 0;
}
