C语言竞赛题目:[11]捕鱼和分鱼

作者:小胖吴 | 创建时间: 2023-03-22
C语言竞赛题目:[11]捕鱼和分鱼

操作方法

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

算法分析: 根据题意,总计将所有的鱼进行了五次平均分配,每次分配时的策略是相同的,即扔掉一条鱼后剩下的鱼正好分成五份,然后拿走自己的一份,余下其它的四份。 假定鱼的总数为X,则X可以按照题目的要求进行五次分配:X-1后可被5整除,余下的鱼为4*(X-1)、5。若X满足上述要求,则X就是题目的解。

码源: #include<stdio.h> void main() { int n,i,x,flag=1;          /*flag:控制标记*/ for(n=6;flag;n++)          /*采用试探的方法。令试探值n逐步加大*/ { for(x=n,i=1&&flag;i<=5;i++) if((x-1)%5==0) x=4*(x-1)/5; else  flag=0;              /*若不能分配则置标记falg=0退出分配过程*/ if(flag) break;              /*若分配过程正常结束则找到结果退出试探的过程*/ else flag=1;                  /*否则继续试探下一个数*/ } printf("Total number of fish catched=%d\\n",n);     /*输出结果*/ }

运行结果: Total number of fish catched = 3121

点击展开全文

更多推荐