package org.buptdavid.datastructure.zj;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* 小Q的父母要出差N天,走之前给小Q留下了M块巧克力。小Q决定每天吃的巧克力数量不少于前一天吃的一半,
* 但是他又不想在父母回来之前的某一天没有巧克力吃,请问他第一天最多能吃多少块巧克力
*/
public class Demo1 {
static int key=0;
static int value=0;
private static final double tmp=0.5;
private static final int day =5;//N天
private static final int food =40;//M块巧克力
public static void main(String[] args) {
while (true){
Map<Integer,Integer> map=new HashMap<Integer, Integer>();
map.put(key,value);
key++;value++;
double result = exce(map);
if(result!=-1){
System.out.println("第一天最多吃"+result+"块巧克力");
break;
}
}
}
public static double exce(Map<Integer,Integer> map){
// 1 x
// 2 x+x*0.5
// 3 x+(x*0.5)+(x+x*0.5)*0.5
// ...
double sum=0;
int key =0;
Set<Map.Entry<Integer, Integer>> entries = map.entrySet();
for (Map.Entry<Integer, Integer> entry : entries) {
sum=entry.getValue();
key = entry.getKey();
}
for (int i = 1; i <=day; i++) {
sum+=sum*tmp;
}
System.out.println("如果第一天吃"+key+"块,那么到父母出差回来总共吃了"+sum+"块");
if(sum>food){
return key-1;
}
return -1;
}
}
运行如下:
来源:CSDN
作者:binary小生
链接:https://blog.csdn.net/qq_34827263/article/details/103497490