猴子吃桃子问题

来源:互联网 发布:李勇seo 编辑:程序博客网 时间:2024/04/28 06:56

猴子吃桃子问题

题目

猴子吃一堆桃子,不知道总共有多少个桃子,第一天吃了总数的一半,不过瘾,又吃了三个。后来决定奇数天吃剩下桃子的一半加3个,偶数天吃剩下桃子的一半加1个。到最后一天的时候,只剩下了一个桃子。如果给定天数,能不能算出来总共的桃子数?

分析

1,如果最后一天剩下一个桃子,则可以往回倒推。
2,如果最后一天是偶数天,则前一天是奇数天,还有8个桃子(吃掉一半(4个),再吃3个,刚好剩下1个);设前一天有X个,则有,x=x/2+3+1; 所以 x=(1+3)*2。
3,如果最后一天是奇数天,则前一天是偶数天,还有4个桃子(吃掉一半(2个),再吃1个,刚好还剩1个);设前一天有X个,则有,x=x/2+1+1; 所以 x=(1+1)*2。

public  int cal(int days){        int sum=1;//最后一天剩下的桃子数为1               for(int i=days-1;i>0;i--){//从倒数第二天开始            if(i%2==1){//奇数天                sum=(sum+3)*2;            }else{//偶数天                sum=(sum+1)*2;            }        }        return sum;}

小结

1,逆向思维方式,因为有吃一半桃子的存在,所以前一天剩余的桃子数一定是偶数,则可以从2开始试验。因为最后一天只剩下一个桃子,所以前一天是很快可以试出来的。则可以总结出来规律。
2,想很容易想出来,但是总结规律,一定要写出来,才可以更快的总结出来。

0 0
原创粉丝点击