hdu 1165 Eddy's research II
在本题给到以下图片,我当时候第一想法是使用递归,但是根据题目中给出的数据大小去想的话,递归会超时.
在经过实例测试之后,接下来看实例(作者只写了一部分)
如图可以看出(输出值sum)
m==0 sum=n+1;
m==1 sum=m+n+1;
m==2 sum=2*(n+1)+1;
m==3 sum=2^(n+3)-3;
大家可以自己动手实践一下,下面附上代码
1 #include<iostream> 2 using namespace std; 3 int quickmi(int a, int b) 4 { 5 int ans=1,base=a; 6 while(b!=0) 7 { 8 if(b&1==1) 9 ans*=base; 10 base*=base; 11 b>>=1; 12 } 13 return ans; 14 } 15 int main() 16 { 17 int m,n; 18 while(cin>>m>>n) 19 { 20 if(m==3) 21 { 22 if(n>24) 23 { 24 break; 25 } 26 else 27 { 28 cout<<quickmi(2,n+3)-3<<endl; 29 } 30 } 31 else 32 { 33 if(m==0) 34 { 35 cout<<n+1<<endl; 36 } 37 if(m==1) 38 { 39 cout<<m+n+1<<endl; 40 } 41 if(m==2) 42 { 43 cout<<2*(n+1)+1<<endl; 44 } 45 } 46 } 47 }