海盗比酒量

博客内容涉及一个数学逻辑问题,描述了一群不超过20人的海盗进行酒量比赛,每轮平分一瓶酒,经过四轮后所有人倒下,船长醒来发现只剩他自己。问题是推断初始人数及每轮结束后剩余人数。通过循环计算,找出所有可能的组合,条件是四轮饮酒量之和等于1。博客讨论了解题思路和代码实现,包括错误分析和修正。
摘要由CSDN通过智能技术生成

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

#include<iostream>
using namespace std;
int main()
{
 double a,b,c,d;
  for(int i=1;i<=20;i++)//不多于20人,第一轮
  {
   a=1.0/i;
   for(int j=1;j<i;j++)//第二轮
   {
    b=1.0/j;
    for(int x=1;x<j;x++)//第三轮
    {
     c=1.0/x;
     for(int y=1;y<x;y++)//第四轮
     {
      d=1.0/y;
      if((a+b+c+d)==1)//判断四轮下来,船长喝的是否为1
      cout<<i<<","<<j<<","<<x<<","<<y<<","<<"0"<<endl;
     }
    }
   }
  }
  return 0;
}

在这里插入图片描述
思路:因为船长喝了四轮(满轮),而且正好喝完一瓶。所以,四次喝的都是一个分数,它们相加为1。
错误点:1.一开始设置的五个循环(因为有四轮,想着四次挑选),但后来发现这样是多此一举;2.值的确定问题,后一轮的数量肯定要比第一轮的数量要少,是小于,而不是小于等于;3.因为喝的是一个分数,而人数是一个整数,所以要注意类型转换,“/”号前如果是整型就是整除,如果是浮点型就是除。根据前面的数字来判断;4.注意最后输出的是人数。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值