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。

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

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

相关推荐

  1. C 练习实例80-猴子

    2024-02-15 17:28:02       37 阅读
  2. C语言:公式求和

    2024-02-15 17:28:02       57 阅读
  3. 班问题 、幼儿园班(C语言

    2024-02-15 17:28:02       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-15 17:28:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-15 17:28:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-15 17:28:02       87 阅读
  4. Python语言-面向对象

    2024-02-15 17:28:02       96 阅读

热门阅读

  1. hpp文件:C++开发中的利器

    2024-02-15 17:28:02       45 阅读
  2. 【zabbix】(四)-钉钉告警&企业微信配置

    2024-02-15 17:28:02       79 阅读
  3. Rust的if let语法:更简洁的模式匹配

    2024-02-15 17:28:02       45 阅读
  4. 【ASP.NET 6 Web Api 全栈开发实战】--前言

    2024-02-15 17:28:02       50 阅读
  5. 作业2024/2/15

    2024-02-15 17:28:02       43 阅读
  6. D. Yet Another Sorting Problem - 树状数组求逆序数

    2024-02-15 17:28:02       50 阅读
  7. AGV-产品设计概述

    2024-02-15 17:28:02       53 阅读