题目 // 一个岛上 飘来五个人
// A B C D E 岛上还有一只猴
// 还有一棵桃树 N个桃子
// 于是5个人决定把这个桃子分一分 平均分
// 当天晚上 A起来了 悄悄起来 给桃子 分成了6份 自己拿走一份 多了一个给猴子
// 之后 B起来了 悄悄的起来了 给剩下的桃子分成6份 自己拿走一份 多一个给猴子
//............
// 求 岛上有多少个桃子
// 7771
public class fentao {
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%6 == 1){ //如果桃子总数除以6余1说明此桃子总数符合分桃方案(sum2%6 == 1)
sum2 -= 1; //因为桃子被猴子扔掉一个,所以要减1
sum2 -= sum2/6; //又因为桃子被平均分为了6份并且被猴子拿走了1份,所以要减1/6
index++; //如果符合分桃方案就将计数器加1
}
if(index == 5){ //如果计数器等于5,也就是桃子的总数在符合分桃方案(sum2%6 == 1)的前提下分可5次的话!说明此桃子总数是符合条件的最小整数!
System.out.println("最少有 " + sum1 + " 个桃子!");
flag = false;//关闭外层循环;
break; //跳出内层循环;
}
count++; //5个猴子分桃子嘛!第一个分完了,当然该轮到第二个了!!所以要递增!
}
sum1 += 5; //桃子的总数只有每次递增5才可以符合分桃方案(sum2%6 == 1)!
}
}
}