这题只要理清前后猴子的香蕉数目关系就好了~
注意要用暴力的方法,即从最后一只猴子一堆只有1开始。第一个猴子求第四只猴子四堆的总数只需要乘5就得到了。
对之后的猴子,上一只猴子的四堆总数=当前猴子的五堆总数,也就是说,前一只猴子的香蕉五堆香蕉的总量=当前猴子的五堆总数/4*5+上一只吃掉的。当然,如果当前猴子的五堆总数不被4整除,那我们就直接返回倒数第一只也就是第五只猴子,让初始堆中的香蕉数目加1。直到我们找到一个这样的初始堆中的香蕉数目,使得能够连续出现可计算的五个猴子。最后答案就计算出来了。
代码如下所示:
#include <iostream>
using namespace std;
int main()
{
// 请在此输入您的代码
int begin=1;
int before;//记录前一次猴子的四堆的总量
int ans;
int monkey=1;
while(true)
{
if(monkey==5) break;
if(monkey==1) before=5*begin;
if(before%4!=0)
{
monkey=1;
begin++;
continue;
}
monkey++;
before=before/4*5+6-monkey;
}
cout<<before;
// cout<<3141<<endl;
return 0;
}