早教吧作业答案频道 -->其他-->
JAVA问题,代码怎么写呢?谁能写得出?有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,
题目详情
JAVA问题,代码怎么写呢?谁能写得出?
有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复...... 直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。当第4瓶酒平分喝下后,大家都倒下了。
等船长醒来,发现海盗船搁浅了。他在航海日志中写到:“......昨天,我正好喝了一瓶.......奉劝大家,开船不喝酒,喝酒别开船......”
请你根据这些信息,推断开始有多少人,每一轮喝下来还剩多少人。
如果有多个可能的答案,请列出所有答案,每个答案占一行。
格式是:人数,人数,...
例如,有一种可能是:20,5,4,2,0
我没积分了
有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复...... 直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。当第4瓶酒平分喝下后,大家都倒下了。
等船长醒来,发现海盗船搁浅了。他在航海日志中写到:“......昨天,我正好喝了一瓶.......奉劝大家,开船不喝酒,喝酒别开船......”
请你根据这些信息,推断开始有多少人,每一轮喝下来还剩多少人。
如果有多个可能的答案,请列出所有答案,每个答案占一行。
格式是:人数,人数,...
例如,有一种可能是:20,5,4,2,0
我没积分了
▼优质解答
答案和解析
这么复杂的问题,用Java来写……只不过是考验算法了……
我计算了一下,应该只有一个答案: 6,3,2,1,0
不知道我的理解是否有偏差……
船长应该是喝了3轮就倒下了,而船长总共喝了1瓶。我写的程序是这样子的:
public final class Test {
public static void main(String[] args) throws InterruptedException {
int a; // 总人数
int b; // 第一轮之后,第二轮之前的人数
int c; // 第二轮之后,第三轮之前的人数
int d; // 第三轮之后,第四轮之前的人数
int e; // 第四轮之后的人数
/* result_up开头的,都是分子 , result_down开头的,都是分母 */
/* result_up1表示第一轮之后的分子,result_down1表示第一轮之后的分母, */
/* result_up1 / result_down1 表示第一轮之后,船长喝下的酒的总和相当于一瓶酒的几分之几 */
int result_up1;
int result_down1;
int result_up2;
int result_down2;
int result_up3;
int result_down3;
// 如果海盗船长在第四轮之前就倒下了,就不需要这2行代码了
// int result_up4;
// int result_down4;
for (int i = 20; i > 3; i--) {
a = i;
result_up1 = 1;
result_down1 = i;
for (int j = i - 1; j > 2; j--) {
b = j;
result_up2 = result_up1 * j + result_down1;
result_down2 = result_down1 * j;
for (int k = j - 1; k > 1; k--) {
c = k;
result_up3 = result_up2 * k + result_down2;
result_down3 = result_down2 * k;
for (int l = k - 1; l > 0; l--) {
d = l;
for (int m = l - 1; m > -1; m--) {
e = m;
// 如果海盗船长在第四轮之前就倒下了,就不需要这一行代码了
// result_up4 = result_up3 * k + result_down3;
// 如果海盗船长在第四轮之前就倒下了,就不需要这一行代码了
// result_down4 = result_down3 * k;
/* 判断海盗船长是否总共喝够一瓶 */
if (result_up2 == result_down2 || result_up3 == result_down3
// 如果海盗船长在第四轮之前就倒下了,就不需要这一行代码了
// || result_up4 == result_down4) {
) {
System.out.print(a + "," + b + "," + c + "," + d + "," + e + " ");
System.out.println("true");
}
}
}
}
}
}
}
}
嗯,如果还有什么疑问,可以+ Q,470372-243(去掉-)
我计算了一下,应该只有一个答案: 6,3,2,1,0
不知道我的理解是否有偏差……
船长应该是喝了3轮就倒下了,而船长总共喝了1瓶。我写的程序是这样子的:
public final class Test {
public static void main(String[] args) throws InterruptedException {
int a; // 总人数
int b; // 第一轮之后,第二轮之前的人数
int c; // 第二轮之后,第三轮之前的人数
int d; // 第三轮之后,第四轮之前的人数
int e; // 第四轮之后的人数
/* result_up开头的,都是分子 , result_down开头的,都是分母 */
/* result_up1表示第一轮之后的分子,result_down1表示第一轮之后的分母, */
/* result_up1 / result_down1 表示第一轮之后,船长喝下的酒的总和相当于一瓶酒的几分之几 */
int result_up1;
int result_down1;
int result_up2;
int result_down2;
int result_up3;
int result_down3;
// 如果海盗船长在第四轮之前就倒下了,就不需要这2行代码了
// int result_up4;
// int result_down4;
for (int i = 20; i > 3; i--) {
a = i;
result_up1 = 1;
result_down1 = i;
for (int j = i - 1; j > 2; j--) {
b = j;
result_up2 = result_up1 * j + result_down1;
result_down2 = result_down1 * j;
for (int k = j - 1; k > 1; k--) {
c = k;
result_up3 = result_up2 * k + result_down2;
result_down3 = result_down2 * k;
for (int l = k - 1; l > 0; l--) {
d = l;
for (int m = l - 1; m > -1; m--) {
e = m;
// 如果海盗船长在第四轮之前就倒下了,就不需要这一行代码了
// result_up4 = result_up3 * k + result_down3;
// 如果海盗船长在第四轮之前就倒下了,就不需要这一行代码了
// result_down4 = result_down3 * k;
/* 判断海盗船长是否总共喝够一瓶 */
if (result_up2 == result_down2 || result_up3 == result_down3
// 如果海盗船长在第四轮之前就倒下了,就不需要这一行代码了
// || result_up4 == result_down4) {
) {
System.out.print(a + "," + b + "," + c + "," + d + "," + e + " ");
System.out.println("true");
}
}
}
}
}
}
}
}
嗯,如果还有什么疑问,可以+ Q,470372-243(去掉-)
看了 JAVA问题,代码怎么写呢?...的网友还看了以下:
高中求数列通项几种类型有几个类型我不会,老是也没讲,①A(n+1)=pAn+q的n次幂②An=pA 2020-06-03 …
利息的换算的问题,究竟是怎样换算的例如:5厘的利息,究竟是5%还是0.5%,我看很多人说的都是说5 2020-06-09 …
初三的几位同学拍了一张合影作留念,已知冲一张底片需要0.80元,洗一张相片需要0.35元.在每位同 2020-06-15 …
初三的几位同学拍了一张合影作留念,已知冲一张底片需要0.80元,洗一张相片需要0.35元.在每位同 2020-06-15 …
小数的平方有整数吗?为什么整数的平方根有小数?可无限小数的平方不等于整数?如:2的平方根=1.几几 2020-06-27 …
质点在t=1s时瞬时速度为0吗?(这个我知道不为0,能否举几个例子)加速度大小和方向改变吗?改为: 2020-08-02 …
下面每一横排三个三角形九个数字是按一定规律排成的,仔细看一下,0应该填几00647002601000 2020-11-02 …
如果a、b、c是不同的自然数,且a、b、c都不为0.A=a*b*c,那么A至少有几个因数?如果a、b 2020-11-20 …
七年级下半学期数学题目16的0.25次方-0.3是几?-0.008的三分之一次方+16的四分之一次方 2020-12-17 …
本人高一,没学过极限和数列,但谁能解释下0除0怎么会没意义?难道不是任意实数么?我认为当分母为0时只 2021-02-03 …