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。

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

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

相关推荐
HaoHao_0103 分钟前
AWS App2Container
服务器·云计算·aws·云服务器
因兹菜5 分钟前
【LeetCode】day15 142.环形链表II
算法·leetcode·链表
dilvx10 分钟前
PTRACE_TRACEME 与反调试
linux·运维·服务器
大大大大小小13 分钟前
问卷调查系统Two-Step-Kmeans-前端后端搭建完成
前端·算法·kmeans
青椒大仙KI1114 分钟前
25/2/6 <机器人基础> 运动学中各连杆的变换矩阵求法
算法·矩阵·机器人
倔强的初学者31 分钟前
Python aiortc API
服务器·python·webrtc
shelby_loo40 分钟前
Ubuntu 下通过 Docker 部署 NGINX 服务器
服务器·ubuntu·docker
且撷相思红豆枝1 小时前
ESP32开发学习记录---》GPIO
开发语言·c++·算法
Heris992 小时前
c语言——网络编程概述、socket【套接字的创建、ip和port写入套接字、通过套接字文件读取和发送数据】
c语言·网络·tcp/ip
wclass-zhengge3 小时前
04树 + 堆 + 优先队列 + 图(D4_图(D1_基础学习))
数据结构·算法