(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);
}
请大神赐教,衷心感谢! 展开
等船长醒来,发现海盗船搁浅了。他在航海日志中写到:“......昨天,我正好喝了一瓶.......奉劝大家,开船不喝酒,喝酒别开船......”
请你根据这些信息,推断开始有多少人,每一轮喝下来还剩多少人。
如果有多个可能的答案,请列出所有答案,每个答案占一行。
格式是:人数,人数,...
参考答案:
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);
}
请大神赐教,衷心感谢! 展开
3个回答
引用zhang_hao_ran的回答:
因为船长一共喝了1瓶酒。n1代表总人数,n2代表第一轮没醉的,后面类推。第一次喝了:1/n1,第二次喝掉1/n2,第三次喝掉1/n3,第四次喝掉1/n4。所以1/n1+1/n2+1/n3+1/n4==1
因为船长一共喝了1瓶酒。n1代表总人数,n2代表第一轮没醉的,后面类推。第一次喝了:1/n1,第二次喝掉1/n2,第三次喝掉1/n3,第四次喝掉1/n4。所以1/n1+1/n2+1/n3+1/n4==1
展开全部
分数的不能这样子弄。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
每一瓶酒船长都喝了
第一瓶酒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即为答案。
第一瓶酒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即为答案。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询