猴子吃桃问题(南阳ACM324)

时间:2023-06-14 09:15:14

猴子吃桃问题

时间限制:3000 ms  |  内存限制:65535 KB
难度:0
描述
有一堆桃子不知数目,猴子第一天吃掉一半,又多吃了一个,第二天照此方法,吃掉剩下桃子的一半又多一个,天天如此,到第m天早上,猴子发现只剩一只桃子了,问这堆桃子原来有多少个? (m<29)
输入
第一行有一个整数n,表示有n组测试数据(从第二行开始,每一行的数据为:第m天);
输出
每一行数据是桃子的总个数
样例输入
2
3
11
样例输出
22
6142

我的程序:

#include<stdio.h>
int main()
{
    int i,j,n,m,x=0,y=1;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
       scanf("%d",&m);
       y=1;
       for(j=0;j<m;j++)
       {
         y=(1+y)*2;
       }
       printf("%d\n",y) ;
    } 
      
    system("pause");
    return 0;
}
    
    最优程序:
#include<stdio.h>
int main()
{
    int n,m;   
    scanf("%d",&n);   
    while(n--)
    {
     scanf("%d",&m);  
     printf("%d\n",(3<<m)-2); //找规律题,<<左移运算 ,0000011(3)左移为0001100(12)—2=10(三天)
    }
    system("pause");
return 0;
}