邪狼:“老大,好像还是不够油钱啊?”
修罗王:“看来只好用我的独门绝技----能力增持术了。”
邪狼:“听说能量增持数很霸道的?”
修罗王:“没错,假设初始燃油能提供的能量为X,当我对它进行能量增持n秒后,该然后的能量将达到Xn”
邪狼:“这么强大的技能啊,简直逆天了,不过怎么之前不见老大用过?”
修罗王:“偶尔偷偷用几次没关系,经常用,燃油公司会找我麻烦的。”
现已知X和n,试计算Xn的值。
3 2
9
直接上代码:
非递归:
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; int main() { int x; int mi; int n; while(scanf("%d %d",&x,&n)!=EOF){ mi=x; if(n==0){ printf("1\n"); continue; } for(int i=1;i<n;){ if(i<n/2){ mi*=mi; i*=2; }else{ mi*=x; i+=1; } } printf("%d\n",mi); mi=0; } return 0; }
递归:
//if判断里面,n==2,n==3,可以不写。
#include <iostream> #include <cstdio> using namespace std; int mi(int x,int n){ if(n==0){ return 1; } if(n==1){ return x; } if(n==2){ return x*x; } if(n==3){ return x*x*x; } if(n%2==0){ return mi(x,n/2)*mi(x,n/2); } if(n%2!=0){ return mi(x,(n-1)/2)*mi(x,(n-1)/2)*x; } } int main() { int x; int n; int jieguo; while(scanf("%d %d",&x,&n)!=EOF){ jieguo=mi(x,n); printf("%d\n",jieguo); } return 0; }
原文:http://www.cnblogs.com/TWS-YIFEI/p/5693416.html