蓝桥杯真题

public class Main1 {
/**

  • 功能描述:
  • 5只猴子是好朋友,在海边的椰子树上睡着了。这期间,有商船把一大堆香蕉忘记在沙滩上离去。
  • 第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份藏起来继续睡觉。
  • 第2只猴子醒来,重新把香蕉均分成5堆,还剩下2个,就吃掉并把自己的一份藏起来继续睡觉。
  • 第3只猴子醒来,重新把香蕉均分成5堆,还剩下3个,就吃掉并把自己的一份藏起来继续睡觉。
  • 第4只猴子醒来,重新把香蕉均分成5堆,还剩下4个,就吃掉并把自己的一份藏起来继续睡觉。
  • 第5只猴子醒来,重新把香蕉均分成5堆,哈哈,正好不剩!
  • 请计算一开始最少有多少根香蕉,和每只猴子得到的香蕉数量
  • 题目分析:从第四只猴子看
  • 第四只猴子拿走了自己那一堆,还剩下四堆,然后第五只猴子把剩下的四堆分成5堆,所以,剩下的香蕉肯定是四和五的倍数,即:最少为4*5=20
  • 设最少需要 i 根香蕉,每次被猴子吃掉的香蕉为j(j<=4),剩下的香蕉就为 (i-j)-(i-j)/5 ,然后题中把 i 强转为f
  • 所以,剩下的香蕉树应该为 f = (f-j) - (f-j)/5;
  • 然后因为第五只猴子恰好分为5推无剩余,所以,f%5==0时,条件成立
  • 因前四只猴子吃掉了多余的香蕉,并且拿走了属于自己的那一推香蕉,然后,第五只猴子分成的五推香蕉会平均分给五只猴子
  • 所以,每只猴子拿到的香蕉数应该为:吃掉的+拿走的+最后的五堆之一

**/
public static void main(String[] args) {
for (int i = 20; i <9999 ; i++) {
float f = (float) i;
float f5;
float f4;
float f3;
float f2;
float f1;
for (int j = 1; j <=4 ; j++) {
f = (f-j) - (f-j)/5;
}

    if (f%5 == 0){
        f5 = f/5;
        f1 = (i-1)/5+1+f5;
        f2 = ((i-1)/5*4-2)/5+2+f5;
        f3 = (((i-1)/5*4-2)/5*4-3)/5+3+f5;
        f4 = ((((i-1)/5*4-2)/5*4-3)/5*4-4)/5+4+f5;


        System.out.println("一共有"+i+"根");
        System.out.println("第五只猴子有"+f5+"根");
        System.out.println("第四只猴子有"+f4+"根");
        System.out.println("第三只猴子有"+f3+"根");
        System.out.println("第二只猴子有"+f2+"根");
        System.out.println("第一只猴子有"+f1+"根");
        break;

    }
}

}
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值