/*猴子吃桃问题1:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少*/
(先把问题理解了,写程序就容易了)
解析:由题可知:有若干(num)桃子,每天都是吃前天剩下的一半多一个,到第十天后就剩下1个桃子,那我们就逆推回去
num=2*(num+1),然后写个循环语句,让计算机自己算出结果;
代码一:在代码二处;
/*猴子吃桃问题2:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只
猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了
一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,
问海滩上原来最少有多少个桃子?*/
解析:一样假设有total个桃子,第一个猴子拿走自己的一份剩下total=(total-1)/5*4;逆推回去 ()/4*5+1;
假设至少剩下total=4个,4的倍数,设初始值last=4;然后先写一个for循环让其循环,在循环中写个if判断语句判断其是否符合
total%4==0的条件,然后计算输出
代码二:
package kcw.com;
public class MonkeyEating {
public static void main(String[] args) {
/*猴子吃桃问题1:*/
int num=1; //初始为1
for(int i=2;i<=10;i++) {
num=2*(num+1); //若干个桃子数计算公式
}
System.out.println(num);
/*猴子吃桃问题2:*/
//(total-1)/5*4
// /4*5+1
int last=4;
int total=4;
for(int i=1;i<=5;) {
if(total%4==0) { //条件满足计算下列公式
total=total/4*5+1; //逆推得出total计算公式
i++; //满足条件进行自加
}else {
i=1; //不满条件回到最初重新开始
last+=4; //以4一个循环
total=last; //赋值给total重新计算
}
}
System.out.println(total);
}
}
总结:算法问题,可能描述不是很清晰,但希望能够帮助到你们,给你们提供一些思路