南阳理工学院OJ_324_猴子吃桃问题

在小媛师姐的“继续”施压之下~我终于花了几十分钟把公式推导出来了,这感觉不是一般爽

有一堆桃子不知数目,猴子第一天吃掉一半,又多吃了一个,第二天照此方法,吃掉剩下桃子的一半又多一个,天天如此,到第m天早上,猴子发现只剩一只桃子了,问这堆桃子原来有多少个? (m<29)

逆推法:

第M天吃完桃子后就剩下1个桃子了,猴子吃了3个:Sum_n等于第n天总的桃子数,eat_n等于第n天吃了的桃子数,res_n等于第n天剩下的桃子数

(Sum_n+2)/2=eat_n;

Sum_(n-1)=res_n=(Sum_n-2)/2

((Sum_n-2)/2+2)/2=eat_(n-1)

(Sum_n+2)/4=eat_(n-1)

eat_n=2*eat_(n-1)

Sum_n=eat_n*2-2

 
#include<stdio.h>
int main()
{
    int n,m;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%d",&m);
        printf("%d\n",(3<<m)-2);//3是第m天吃掉的桃子数
    }
    return 0;
} 

 

posted @ 2013-04-28 12:33  小仪在努力~  阅读(138)  评论(0编辑  收藏  举报