計算x的n次方(用函式)
阿新 • • 發佈:2018-12-23
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<iostream> #include <algorithm> #include <cstdlib> #include<cstdio> #include<cstring> #include <cmath> using namespace std; const int M=200000+10; const int MAX=0x3f3f3f3f; typedef long long ll; int pow(int a,int b,int c) { int ans=1; while(b) { if(b&1) ans*=a; a*=a; b>>=1; } return ans; } int main() { int x,n; scanf("%d %d",&x,&n); printf("%d\n",pow(x,n,1)); return 0; }