c语言计算渔夫捕鱼问题

题目要求:

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();   
}

运行结果:

c语言计算渔夫捕鱼问题

运行结果

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章