欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

海滩上有一堆桃子,五只猴子来分。(C语言实现)

程序员文章站 2022-05-12 16:15:20
...

海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只 猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了 一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的, 问海滩上原来最少有多少个桃子?

分析:设海滩上原来有x个桃子,则

第一只猴子分完桃子之后剩下的桃子x1=x-1-(x-1)/5=(4*(x-1))/5

第二只猴子分完桃子之后剩下的桃子x2=x1-1-(x1-1)/5=(4*(x1-1))/5

第三只猴子分完桃子之后剩下的桃子x3=x2-1-(x2-1)/5=(4*(x2-1))/5

第四只猴子分完桃子之后剩下的桃子x4=x3-1-(x3-1)/5=(4*(x3-1))/5

第五只猴子分完桃子之后剩下的桃子x5=x4-1-(x4-1)/5=(4*(x4-1))/5

假设第五只猴子分得的桃子为1,五份则为5,即第5只猴子分完桃子后剩下的桃子为4

4/4*4+1=6  即6为第五只猴子开始分之前的桃子数,但是6%4!=0,即不满足当第四只猴子分完桃子后剩余桃子个数。

所以第五只猴子分得的桃子数不是1,那么从2开始推,直到满足每次所有条件为止。

海滩上有一堆桃子,五只猴子来分。(C语言实现)

从图中可以看出 假定第五只猴子分得的桃子个数为255时,满足所有条件。

即当第五只猴子分得桃子个数为255时

剩余桃子数1020,那么四只猴子分完桃子后剩余1276=1020/4*5+1   //此处除以4是因为剩余桃子数刚好为第五只猴子的4份

当第三只猴子分完桃子后剩余1596=1276/4*5+1 

第二只猴子分完桃子后剩余1996=1596/4*5+1

第一只猴子分完桃子后剩余2496=1996/4*5+1

那么没有分桃子时桃子为3121=2496/4*5+1

  符合所有条件

那么没有分桃子时,桃子个数最少为3121

代码如下:

#include <stdio.h>

int main()
{
    int i;//循环次数
    int j=1;//第五只猴子分的桃子
    int x;//桃子数
    while(1)
    {
        x=4*j;
        printf("第五只猴子分得桃子为%d个时,剩余桃子数为%d\n",j,x);
        for(i=0;i<5;)
        {
            if(x%4!=0)break;//必须连续五次x都能被4整除才符合条件.
            else
            {
              x=(x/4)*5+1;
              printf("第五只猴子分得桃子为%d个时,剩余桃子数为%d\n",j,x);
              i++;
            }
        }
        printf("\n");

        j++;
        if(i==5)
            break;
    }

    printf("%d",x);
    return 0;
}

 

 

相关标签: c语言学习