猴子分桃(java问题)

2024-11-27 07:07:53
推荐回答(2个)
回答1:

public static void main(String[] args) {
int sum2; //用来进行逻辑运算的桃子总数
int sum1 = 6; //实际的桃子总数
int count; //分桃子次数(控制内层循环)
int index; //分桃子次数(符合分桃方案的次数)
boolean flag = true; //控制外层循环

while(flag){
index = 0; //初始化分桃子的次数为0
count = 0; //初始化为第一个猴子开始分桃子
sum2 = sum1; //初始化逻辑运算的桃子总数为实际的桃子总数,因为此变量用于计算,所以值会改变,为了不影响实际的桃子总数,所以用此变量代替!
while(count < 5){ //猴子开是分桃子了!
if(sum2%5 == 1){ //如果桃子总数除以5余1说明此桃子总数符合分桃方案(sum2%5 == 1)
sum2 -= 1; //因为桃子被猴子扔掉一个,所以要减1
sum2 -= sum2/5; //又因为桃子被平均分为了5份并且被猴子拿走了1份,所以要减1/5
index++; //如果符合分桃方案就将计数器加1
}
if(index == 5){ //如果计数器等于5,也就是桃子的总数在符合分桃方案(sum2%5 == 1)的前提下分可5次的话!说明此桃子总数是符合条件的最小整数!
System.out.println("最少有 " + sum1 + " 个桃子!");
flag = false;//关闭外层循环;
break; //跳出内层循环;
}
count++; //5个猴子分桃子嘛!第一个分完了,当然该轮到第二个了!!所以要递增!
}

sum1 += 5; //桃子的总数只有每次递增5才可以符合分桃方案(sum2%5 == 1)!
}
}
不好意思啊,由于刚才比较赶时间,没好好写!
这回你再看看!! 如果还有哪里不清楚的话就问我好了!!

回答2:

思路:最后剩下的桃子数必定是4的倍数即4*n,n从1开始取
public static void main(String[] args) {

int i = 4; //最后所剩桃数
int j; //循环变量
int m;
int k = 0; //临时变量

int count; //分桃次数

while (i < 10000)//答案可能不唯一,设定精度在10000内
{
count = 0;
m = i; //倒着分完第count次后的桃子数

j = 0;
while (j < 5) {
k = i / 4 * 5 + 1;
i = k;
if(k % 4 == 0){ //第count次分完后所剩的桃子书还是4的倍数
count++;
}else{
break;
}
j++;
}
i = m;
if (count == 4){
break;
}
i += 4;
}
System.out.println(k);
}