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。

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

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

相关推荐
云飞云共享云桌面28 分钟前
非标自动化研发成本高?云飞云共享云桌面:1台主机=10台工作站,年省数十万。
大数据·运维·服务器·人工智能·自动化·云计算·电脑
小王不爱笑1321 小时前
G1 GC 的核心基础:Region 模型的补充细节
java·jvm·算法
Linux运维技术栈1 小时前
生产环境Linux应用目录迁移至LVM独立分区 标准化实战方案
linux·运维·服务器·lvm·逻辑卷
小王不爱笑1322 小时前
三色标记算法
算法
feasibility.2 小时前
SSH Agent Forwarding 与 tmux 排障笔记
linux·运维·服务器·经验分享·笔记·ssh
ShawnLiaoking2 小时前
Linux 会话窗口常开
linux·运维·服务器
小O的算法实验室2 小时前
2026年AST SCI1区TOP,基于速度障碍法的多无人机三维避障策略,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
U-52184F693 小时前
深入理解“隐式共享”与“写时复制”:从性能魔法到内存深坑
java·数据库·算法
pp起床3 小时前
Part02:基本概念以及基本要素
大数据·人工智能·算法
lzh200409193 小时前
红黑树详解
算法