哪位战士可以用java程序实现以下问题?
整数“1”分解为以下形式。
1 = 1/a+1/b+1/c+1/d,以及0
a、B、C、D代表每瓶酒后剩下的海盗数量。
假设海盗初始人数为X,那么a = x,那么海盗船长第一次喝了1/x瓶酒。
喝完第一瓶酒,还剩下B人,也就是第一次喝了x-b人,海盗船长第二次喝了1/b瓶酒。。。。
诸如此类。海盗船喝了1/x+1/b+1/c+1/d = 1瓶酒。
写一个这样的程序。
==============================
公共类haidao {
公共静态void main(String[] args) {
int min person = 1;
double all persons = 4;
while(all persons & lt;= 20) {
int firstPersons = minPerson
while(first persons & lt;=所有人){
int secondPersons = minPerson
while(第二个人& lt=所有人-第一个人){
int thirdPersons = minPerson
while(third persons & lt;=所有人-第一个人
-第二个人){
double captionDrinkedTotal = 1.0/所有人
+ 1.0/(所有人-第一个人)
+ 1.0/(所有人-第一人-第二人)
+ 1.0/(所有人-第一人-第二人-第三人)
- 1;
if(math . ABS(captionDrinkedTotal)& lt;0.00000001) {
System.out.print("盗版总数:"+all persons);
System.out.print("第一次喝酒的人数:"+first persons);
System.out.print("第二次摔倒的人数:"+second persons);
System.out.println("第三次喝酒的人数:"+third persons);
}
third persons++;
}
second persons++;
}
first persons++;
}
all persons++;
}
}
}
==========
运行结果:
海盗总人数:12.0第一次醉酒人数:6第二次醉酒人数:2第三次醉酒人数:2
海盗总人数:15.0第一次醉酒人数:5第二次醉酒人数:7第三次醉酒人数:1
海贼总数:18.0第一次醉:9第二次醉:6第三次醉:1
海贼总数:20.0第一次醉:15第二次醉:1第三次醉:2
==========
PS:只要把minPerson = 1改成minPerson = 0,就可以允许一定的喝酒而不至于海盗倒下。