海盗比酒量(四重循环遍历)(有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复...... 直到开了第4瓶)

您所在的位置:网站首页 一瓶牛二什么酒量 海盗比酒量(四重循环遍历)(有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复...... 直到开了第4瓶)

海盗比酒量(四重循环遍历)(有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复...... 直到开了第4瓶)

2024-04-03 02:16| 来源: 网络整理| 查看: 265

题目描述

有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复… 直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。当第4瓶酒平分喝下后,大家都倒下了。

等船长醒来,发现海盗船搁浅了。他在航海日志中写到:“…昨天,我正好喝了一瓶…奉劝大家,开船不喝酒,喝酒别开船…”

请你根据这些信息,推断开始有多少人,每一轮喝下来还剩多少人。

如果有多个可能的答案,请列出所有答案,每个答案占一行。

格式是:人数,人数,…(勿加空格)

例如,有一种可能是:20,5,4,2,0

请给出包括以上答案(20,5,4,2,0)在内的所有可能的答案,每个答案占一行,输出顺序按照第1个数从小到大的顺序排列。

输入 没有输入。

输出 若干行数列,每一行5个整数,两两之间用逗号分隔。 上一行的第1个数应该小于下一行的第1个数。

注意:每一行最后一个数应该是0,且输出中只应该有整数、逗号、换行。不要在任何地方加空格。

思路

简单分析,本来想用递归,发现不用那么拐弯抹角,直接四重循环遍历即可。 题目意思:每次必须都有喝醉的人,剩下的没喝醉的人平分一瓶酒,这样经过四轮,船长分得的酒加起来等于1瓶。 用四重循环来模拟四次的分酒。

值得关注的地方是,本题应该用高精度变量来模拟,避免出现差错与遗漏,并且可以将四个分数的加法,应用乘法变换一下,避免比较小数的困扰。 代码呈上;

#include int main () { double a,b,c,d; double fen1,fen2,fen3,fen4; for(a=20;a>1;a--) { for(b=a-1;b>1;b--) { fen2=a/b; for(c=b-1;c>1;c--) { fen3=a/c; for(d=c-1;d>1;d--) { fen4=a/d; if(1+fen2+fen3+fen4==a) { printf("%.0f,%.0f,%.0f,%.0f\n",a,b,c,d); } } } } } return 0; }

运行示例 在这里插入图片描述 不要忘记最后的答案每行都需要加一个0哦!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3