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。

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

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

相关推荐
鑫—萍9 分钟前
嵌入式开发学习——STM32单片机入门教程
c语言·驱动开发·stm32·单片机·嵌入式硬件·学习·硬件工程
LYS_061814 分钟前
RM赛事C型板九轴IMU解算(4)(卡尔曼滤波)
c语言·开发语言·前端·卡尔曼滤波
漫随流水26 分钟前
leetcode回溯算法(78.子集)
数据结构·算法·leetcode·回溯算法
IT猿手1 小时前
六种智能优化算法(NOA、MA、PSO、GA、ZOA、SWO)求解23个基准测试函数(含参考文献及MATLAB代码)
开发语言·算法·matlab·无人机·无人机路径规划·最新多目标优化算法
We་ct1 小时前
LeetCode 151. 反转字符串中的单词:两种解法深度剖析
前端·算法·leetcode·typescript
芜湖xin1 小时前
【题解-Acwing】AcWing 5579. 增加模数(TLE)
算法·快速幂
清酒难咽1 小时前
算法案例之分治法
c++·经验分享·算法
wen__xvn1 小时前
代码随想录算法训练营DAY25第七章 回溯算法 part04
算法·leetcode·深度优先
代码的奴隶(艾伦·耶格尔)2 小时前
Nginx
java·服务器·nginx
亲爱的非洲野猪2 小时前
动态规划进阶:序列DP深度解析
算法·动态规划