//二分法求 a^n
#include <iostream>
using namespace std;
int pow2(int a, int n){
if(n == 1)
return a;
else if(n % 2 == 0){
return pow2(a * a, n / 2);
}
else if(n % 2 != 0){
return a * pow2(a * a , (n - 1) / 2);
}
}
int main(){
int a, n;
while(cin >> a >> n)
cout << pow2(a, n) << endl;
return 0;
}
//三分法求 a^n
#include <iostream>
using namespace std;
int pow3(int a, int n){
if(n == 0){
return 1;
}
else if(n % 3 == 0){
return pow3(a * a * a, n / 3);
}
else if(n % 3 == 1){
return a * pow3(a * a * a, (n - 1) / 3);
}
else if(n % 3 == 2){
return a * a * pow3(a * a * a, (n - 2) / 3);
}
}
int main(){
int a, n;
while(cin >> a >> n){
cout << pow3(a, n) << endl;
}
return 0;
}
二分,三分 分治求 a^n
最新推荐文章于 2022-06-15 20:35:24 发布