import java.util.Scanner;
/*猴子第一天摘下若干桃子,当即吃了一半,还觉不过瘾,又多吃了一个;
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天天早上都吃了前一天剩下的一半零一个。
到第n天早上想再吃时,见只剩一个桃子了。求第一天共摘了多少桃子。*/
public class Monkey {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n=scan.nextInt();//输入n,代表第n天
//代表第n天,这个时候桃子只剩下一个了,那么n-1天就剩(1+1)*2,
//(1+1)*2;第一个1是说第n天剩下的,第二个1是猴子上一天多吃的一个
// 验证第n天((1+1)*2)/2-1=1
int sum = 1;//第n天的
while(n>1){//这里为啥是n>1下面会有解释
n--;//第n天的剩余数量我们知道是sum,那么我们这个循环中求的就是第n-1天的剩余数量。
//根据这个公式(1+1)*2推出下面的式子
sum=(sum+1)*2;
}
//那么为啥是n>1呢?因为我们这个循环求得是第n-1天的剩余数量,那么要求第一天就是n-1=1的时候,这个时候n等于2,也就是n>1
System.out.println("第一天剩余的桃子数量: "+sum);
}
}
猴子吃桃问题
最新推荐文章于 2024-07-08 00:01:13 发布