题目描述

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

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

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

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

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

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

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

输入
没有输入。

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

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

思路

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

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

#include <stdio.h>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哦!

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

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

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

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

    #include <stdio.h> int main() {int i,j,k,l,m;//i为总人数for(i=20;i>0;i--){//j为第一次剩余的人,第一次至少倒下一人 ...

  3. 有一群海盗(不多于20人),在船上比拼酒量。

    /*有一群海盗(不多于20人),在船上比拼酒量.过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了.再打开一瓶酒平分,又有倒下的,再次重复...... 直到开了第4瓶酒,坐着的已经所剩无几,海 ...

  4. jquery each循环遍历完再执行的方法

    jquery each循环遍历完再执行的方法 因为each是异步的 所以要加计数器. var eachcount=0; $(".emptytip").each(function() ...

  5. 现在有N元钱,两块钱一瓶,或者直接给你N瓶酒,两个空瓶换一瓶酒,四个瓶盖换一瓶酒,问你最后可以喝多少瓶?如果能借酒呢?

    问题描述:现在有N元钱,两块钱一瓶,或者直接给你N瓶酒,两个空瓶换一瓶酒,四个瓶盖换一瓶酒,问你最后可以喝多少瓶?如果能借酒呢? 解决思路1: N元钱,其实就是N/2瓶酒.所以我们在程序中直接使用N瓶 ...

  6. python列表用法详解(查找、添加、删除、修改、复制、循环遍历、列表嵌套)

    1. 列表的格式 [数据1, 数据2, 数据3, 数据4......]         列表可以⼀次性存储多个数据,且可以为不同数据类型. 2. 列表的常⽤操作         列表的作⽤是⼀次性存储 ...

  7. 使用for循环遍历文件

    使用 Python 访问文件,首先得先打开文件,在 Python 下打开文件可以使用 open 内置函数 open r--以只读方式打开 w--以写的方式打开 a--以追加模式打开 r+--以读写模式 ...

  8. C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例

    C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例 Unity中循环遍历每个数据,并做出判断 很多时候,游戏在玩家做出判断以后,游戏程序会遍历玩家身上大量的所需数据,然后做出判断,即首先判 ...

  9. mysql 游标循环_mysql for循环遍历 游标用处

    以前一直不知道游标的作用,之前的结果集遍历 博主一直用的是记录查询出来的记录总数并一条条用LIMIT 1 OFFSET index 进行查找,并进行处理的. 现在终于会使用游标了,献上一个小例子供大家 ...

最新文章

  1. 花40分钟写一个-CBIR引擎-代码公开
  2. 阿里Java架构师精通资料:性能优化+亿级并发架构汇总+架构选型
  3. java7 uri,细数Java8中那些让人纵享丝滑的文件操作
  4. 斗地主AI算法——第九章の被动出牌(3)
  5. POJ 3678 Katu Puzzle
  6. 基于php校园失物招领,校园失物招领系统设计
  7. 2021年营销数智化趋势洞察报告:深链经营孕育品牌发展新商机.pdf(附下载链接)...
  8. -Xlint:deprecation
  9. 高性能的 socket 通讯服务器(完成端口模型--IOCP)
  10. 王者荣耀s18赛季服务器什么时候维护好,王者荣耀S18赛季开始时间是什么时候?王者荣耀S18赛季开始时间一览-超能街机...
  11. asp.net控件的Hyperlink控件
  12. 结晶器或者连铸--流场-温度场-凝固--夹杂物计算说明
  13. 服务器装系统认不得硬盘,装系统的时候认不到硬盘的解决方法
  14. 音乐转换成16进制写进单片机的方法(音符频率和音符的播放长度时间计算)
  15. linux给文件夹腹权限,文件的权限_腹有诗书气自华的技术博客_51CTO博客
  16. 树莓派+PHP+Mairadb数据库读取DHT11
  17. PHP下处理HTTP--json--xml信息
  18. 零基础入门学习python笔记-day1:程序开发谋定而后动
  19. ubuntu卡在无限循环登录界面,进不去桌面的问题#不重装是我们最后的倔强!#
  20. Excel全自动项目管理甘特图

热门文章

  1. Shell编程-02-正则表达式
  2. 三、docker镜像创建
  3. 情到深处人孤独 爱至穷时尽沧桑
  4. 免费的java开发工具_Java那些最常用的免费开放工具,分享这15个!
  5. hibernate 标致符生成器 (转载)
  6. PowerBI-时间智能函数-PREVIOUS系列
  7. springboot的log4j2日志不打印,且控制台不输出!!!
  8. 英语读书笔记-Book Lovers Day 07
  9. Windows-EmEditor emed_v1910 超大文本编辑器
  10. 5亿微博用户信息泄露背后:BTC与暗网数据的纠缠