哪位战士可以用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,就可以允许一定的喝酒而不至于海盗倒下。