A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 jiangenhao 于 2014-4-25 15:33 编辑

A/B/C/D/E 5个人在某天夜里合伙去捕鱼,到凌晨时都疲惫不堪,于是各自找地方睡觉,第二天,A第一个醒来,他将鱼分成5份,把多余的一条鱼扔掉,拿走自己的一份。B第二个醒来,也将鱼分成5份,把多余的一条鱼扔掉,拿走自己的一份。C/D/E依次醒来,按同样的方法拿鱼。问他们合伙至少捕了多少条鱼?

评分

参与人数 1黑马币 +2 收起 理由
jing迪 + 2

查看全部评分

2 个回复

倒序浏览
分析写到程序里面!
  1. #include <stdio.h>


  2. int main()
  3. {
  4.         int n,i,x,flag=1; /*flag:控制标记*/
  5.         for(n=6;flag;n++) /*采用试探的方法。令试探值n逐步加大*/
  6.         {
  7.                 for(x=n,i=1&&flag;i<=5;i++)
  8.                 {
  9.                         if((x-1)%5==0)
  10.                         {
  11.                                 x=4*(x-1)/5;
  12.                         } else
  13.                         {
  14.                                  flag=0; /*若不能分配则置标记falg=0退出分配过程*/
  15.                         }
  16.                 }
  17.                 if(flag)
  18.                 {
  19.                         break; /*若分配过程正常结束则找到结果退出试探的过程*/
  20.                  } else
  21.                 {
  22.                         flag=1; /*否则继续试探下一个数*/
  23.                 }
  24.         }
  25.         printf("5个人总共捕获的鱼数为:%d\n",n);/*输出结果*/
  26.         return 0;
  27. }
复制代码
回复 使用道具 举报
本帖最后由 董月峰 于 2014-4-19 21:34 编辑

很久之前的一个题目了,当时我的思路如下
  1. int main()
  2. {
  3.     for(int x=1;x<999;x++)
  4.     {
  5.         // 第5人醒来看到了sum条鱼,他仍了一条,拿走了x条
  6.         double sum = 5 * x + 1;
  7.         // 依次向上算,第一个人醒来看到了sum条,仍了一条,拿走了第四人醒来看到鱼数目的四分之一
  8.         for(int i = 4; i >= 1; i--)
  9.         {
  10.             sum = sum/4 * 5 + 1;
  11.         }
  12.         // 若sum 正好是整数,结束循环
  13.         if(sum == (int)(sum))
  14.         {
  15.             printf("%d\n", (int)(sum));
  16.             break;
  17.         }
  18.     }

  19.     return 0;
  20. }
复制代码




回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马