吃最多巧克力问题的Java实现

问题的描述:

    小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
巧克力不足,请重新输入

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值