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 }

 

posted @ 2018-03-19 18:48  奋斗の小白  阅读(111)  评论(0编辑  收藏  举报