蓝桥杯真题:猴子分香蕉

这篇博客探讨了一个关于猴子分香蕉的问题,通过暴力算法来寻找满足条件的初始分配方案。博主给出了C++代码实现,该代码遍历可能的初始香蕉数,计算每只猴子分配后的香蕉总数,直到找到一个连续五只猴子可以平均分配的方案。文章强调了理解猴子之间的香蕉数量关系的重要性,并提供了详细的代码解释。
摘要由CSDN通过智能技术生成

 

这题只要理清前后猴子的香蕉数目关系就好了~

注意要用暴力的方法,即从最后一只猴子一堆只有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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值