题目要求:
A、B、C、D、E五渔夫夜间合伙捕鱼,凌晨时都疲倦不堪,各自在河边的树丛中找地方睡着了。待日上三竿,渔夫A第一个醒来,他将鱼分作五份,把多余的一条扔回河中,拿自己的一份回家去了。渔夫B第二个醒来,也将鱼分作五份,扔掉多余的一条,拿走自己的一份,接着C、D、E依次醒来,也都按同样的办法分鱼,问五渔夫至少合伙捕了多少条鱼?试编程序算出。
#include "stdio.h"
#define MAX_N 10000
main()
{
int left_fish;
int s;
int flag;
int i,n;
for (n = 1; n < MAX_N; n++) {
left_fish = 5*n+1; /*第5个渔夫醒来看到的鱼数,只能是5n+1条*/
s = left_fish; /*以假设left_fish为基础向上反推*/
flag = 1; /*标记是否全部反推成功*/
for (i=0; i<4; i++) {
if ((5*s)%4 == 0) {
s = (5*s)/4+1; /*从Sn反推Sn-1的结果*/
} else {
flag = 0; /*反推过程中出现非整数,flag置0,标记失败*/
break; /*跳出内层循环,调整left_fish重新反推*/
}
}
if (flag == 1) {
printf("Fish which were gotten by fishers at least are %d
",s);
break;
}
}
getche();
}
运行结果:
运行结果
留言与评论(共有 0 条评论) “” |