(C语言编程题)有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的……

有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复......直到开了第4瓶酒... 有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复......直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。当第4瓶酒平分喝下后,大家都倒下了。
等船长醒来,发现海盗船搁浅了。他在航海日志中写到:“......昨天,我正好喝了一瓶.......奉劝大家,开船不喝酒,喝酒别开船......”
请你根据这些信息,推断开始有多少人,每一轮喝下来还剩多少人。
如果有多个可能的答案,请列出所有答案,每个答案占一行。
格式是:人数,人数,...

参考答案:
12 6 4 20
15 10 3 20
18 9 3 20
20 5 4 20

#include <stdio.h>
main()
{
double n1,n2,n3,n4;
for(n1=20;n1>4;n1--) //
for(n2=n1-1;n2>3;n2--) //
for(n3=n2-1;n3>2;n3--)
for(n4=n3-1;n4>1;n4--)
if(1/n1+1/n2+1/n3+1/n4==1) //请问这一行是什么意思?为什么要把几轮的人数的倒数相加为1
printf("%.0f,%.0f,%.0f,%.0f\n",n1,n2,n3,n4);
}
请大神赐教,衷心感谢!
展开
 我来答
zhang_hao_ran
推荐于2017-11-25
知道答主
回答量:12
采纳率:0%
帮助的人:11.6万
展开全部
因为船长一共喝了1瓶酒。n1代表总人数,n2代表第一轮没醉的,后面类推。第一次喝了:1/n1,第二次喝掉1/n2,第三次喝掉1/n3,第四次喝掉1/n4。所以1/n1+1/n2+1/n3+1/n4==1
坠asff
2018-02-13
知道答主
回答量:1
采纳率:0%
帮助的人:900
引用zhang_hao_ran的回答:
因为船长一共喝了1瓶酒。n1代表总人数,n2代表第一轮没醉的,后面类推。第一次喝了:1/n1,第二次喝掉1/n2,第三次喝掉1/n3,第四次喝掉1/n4。所以1/n1+1/n2+1/n3+1/n4==1
展开全部
分数的不能这样子弄。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
龍__鳳
2013-05-02 · TA获得超过2346个赞
知道小有建树答主
回答量:948
采纳率:0%
帮助的人:1403万
展开全部
每一瓶酒船长都喝了
第一瓶酒n1个人平分,船长喝了一瓶酒的1/n1;
第二瓶酒n2个人平分,船长喝了一瓶酒的1/n2;
第三瓶酒n3个人平分,船长喝了一瓶酒的1/n3;
第四瓶酒n4个人平分,船长喝了一瓶酒的1/n4。
船长总共喝了一瓶所以是:1/n1+1/n2+1/n3+1/n4=1
所以用4个for循环,输出所有满足1/n1+1/n2+1/n3+1/n4==1的n1,n2,n3,n4即为答案。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式