C语言求解猴子分桃子

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

复制代码
#include <stdio.h>
#include <math.h>

int main()
{
	const int monkey_num = 5;
	int monkey = monkey_num;
	int i = 1;
	int peach = i;

	while (monkey >= 1)				//从第5只猴子开始倒着推算,一直推算到第1只猴子
	{
		if (peach % 4 == 0)
		{
			peach = peach / 4 * 5 + 1;		//假设第n只猴子看到的桃子数是peach,那么上一只猴子看到的桃子数等于peach /4 * 5 + 1
			monkey--;
		}
		else								//如果倒推过程失败,那么试探新的peach值,并从第5只猴子开始重新倒推
		{
			peach = ++i;
			monkey = monkey_num;
		}
	}

	printf("original peach num:%d\n", peach);

	return 0;
}

13只猴子,也能在几十毫秒算出结果:

如果个数再多,int要换成long long。

减少循环次数,程序速度还可以优化。

其实,仔细观察猴子和桃子的个数,可以发现两者之间有一个函数关系,可以直接根据猴子求得桃子个数~_~

相关推荐
getapi12 分钟前
蓝牙模块心跳检测
c语言
江湖有缘24 分钟前
Linux系统之rm命令的基本使用
linux·运维·服务器
烁34740 分钟前
每日一题(小白)暴力娱乐篇23
java·开发语言·算法·娱乐
俄城杜小帅42 分钟前
数据结构刷题之贪心算法
数据结构·算法·贪心算法
一只码代码的章鱼1 小时前
数据结构与算法-图论-复习1(单源最短路,全源最短路,最小生成树)
c++·算法·图论
什码情况1 小时前
整数编码 - 华为OD统一考试(A卷、C++)
数据结构·c++·算法·华为od
int型码农1 小时前
数据结构第六章(一) -图
c语言·数据结构·算法
有梦想的攻城狮1 小时前
spring-cloud-starter-alibaba-sentinel使用说明
linux·服务器·sentinel·springcloud
偏执网友1 小时前
记录IBM服务器检测到备份GPT损坏警告排查解决过程
服务器·gpt
Tony沈哲1 小时前
图像编辑器 Monica 之重构滤镜模块、云端部署模型
算法