算法题每日一练---第1天:猴子分香蕉

1,572 阅读2分钟

「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战

一、问题描述

5 只猴子是好朋友,在海边的椰子树上睡着了。这期间,有商船把一大堆香蕉忘记在沙滩上离去。

第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份藏起来继续睡觉。

第2只猴子醒来,把香蕉均分成5堆,还剩下2个,就吃掉并把自己的一份藏起来继续睡觉。

第3只猴子醒来,把香蕉均分成5堆,还剩下3个,就吃掉并把自己的一份藏起来继续睡觉。

第4只猴子醒来,把香蕉均分成5堆,还剩下4个,就吃掉并把自己的一份藏起来继续睡觉。

第5猴子醒来,重新把香蕉均分成5堆,此时正好不剩!

请计算一开始最少有多少个香蕉?

二、题目要求

考察

1.简单模拟
2.建议用时10~25min

三、解题思路

把题目的描述分成5个条件:

  • 条件1:n%5==1
  • 条件2:条件1满足,n%5==2
  • 条件3:条件2满足,n%5==3
  • 条件4:条件3满足,n%5==4
  • 条件5:条件4满足,n%5==0&&n!=0 条件5满足之后,所有条件全部满足,此时求出的n就是题目要求的值。

四、编码实现

#include<iostream>
using namespace std;
int main()
{
	int i,n;
	for(i=6;;i++)//循环判断香蕉数目
	{
		n=i;
		if(n%5==1)//条件1
		{
			n=(n-1)/5*4;
			if(n%5==2)//条件2
			{
				n=(n-2)/5*4;
				if(n%5==3)//条件3
				{
					n=(n-3)/5*4;
					if(n%5==4)//条件4
					{
						n=(n-4)/5*4;
						if(n%5==0&&n!=0)//条件5
						{
							cout<<i;//满足所有条件输出结果
							return 0;
						}
					}
				}
			}
		}
	}
	return 0;
}

五、输出结果

结果为:3141