问题的描述:
小Q的父母要出差N天,走之前给小Q留下了M块巧克力。小Q决定每天吃的巧克力数量不少于前一天吃的一半,但是他又不想在父母回来之前的某一天没有巧克力吃,请问他第一天最多能吃多少块巧克力
思路很简单,为了保证最后一天有巧克力吃,小Q最后一天吃一个能保证第一天吃最多,并且题目中给出:小Q决定每天吃的巧克力数量不少于前一天吃的一半,要想第一天最多,就用1/2最为合适,详细代码如下:
package UNI;
import java.util.Scanner;
public class chocolate {
public static void main(String[] args) {
System.out.println("请输入巧克力个数M:");
Scanner sc1=new Scanner(System.in);
int M=sc1.nextInt();
System.out.println("请输入出差天数N:");
Scanner sc2=new Scanner(System.in);
int N=sc2.nextInt();
//第i天吃a[i]个巧克力
int[] a=new int[N];
//为了保证最后一天有至少巧克力吃
a[N-1]=1;
if (M-Eat(N)>0) {
System.out.println("第一天最多吃"+(M-Eat(N))+"巧克力");
}else {
System.out.println("巧克力不足,请重新输入");
}
}
private static int Eat(int s) {
int sum=1;
for (int i = 0; i <s-2; i++) {
sum+=2*sum;
}
return sum;
}
}
我们可以进行测试,假如有100块巧克力,出差6天:
请输入巧克力个数M:
100
请输入出差天数N:
6
第一天最多吃19巧克力
假如有100块巧克力,出差7天:
请输入巧克力个数M:
100
请输入出差天数N:
7
巧克力不足,请重新输入

1439

被折叠的 条评论
为什么被折叠?



