当前位置:首页 > C语言 >

海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴

发布时间:2023-09-08 09:24:14 作者:佚名 阅读:(19)

今天云梦编程为大家分享一个C语言经典实例:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?有需要的小伙伴可以参考一下:

海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴

1、程序分析:

假设海滩上原来有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开始推,直到满足每次所有条件为止。

2、程序代码:

    (1)、程序代码一:

#include <stdio.h>

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

     (2)、程序代码二:

#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;
}

3、程序执行结果:

海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴


以上就是云梦编程为大家介绍的海滩上有一堆桃子,五只猴子来分的全部内容了,希望对大家有所帮助,了解更多相关文章请关注云梦编程网!

© 2023 - 云梦编程网 版权所有 鲁ICP备2021017318号-4