百元百鸡一层循环

本文为借鉴网上很多人的方法,总结下来,以督促自己算法博大精深.你要学习的还很多!


不会玩cnds beichui为原作者!


原文如下:

都说这个问题无聊,其实给的都不是最简解法。

这个问题的最简解法不是双层循环,而是单层循环。

分析这个问题,完全可以简化。

如果100元全买小鸡,能买300只小鸡,多出来200的单位,这200的单位实际上是需要公鸡和母鸡数来抵消的。
一只公鸡等于6只小鸡,一只母鸡等于9只小鸡,所以每多一个公鸡,200就被抵消5,多一个母鸡,200被抵消8。

所以这个问题简化后,应该是:几个8和几个5的和等于200?(仔鸡数等于100-8的个数-5的个数)


很显然,单层循环就OK了。


代码如下:
for(int i=1;i<=(200/8);i++){ //此处i为母鸡个数
    if((200-i*8)%5==0){
        int a=(200-i*8)/5;//此处a为公鸡个数
        System.out.println("母鸡"+i+"公鸡"+a+"仔鸡"+(100-i-a));
    }
}


理论上这里 9只小鸡换一只母鸡 应该是抵消的关系,但为何抵消8是因为要在100原来的小鸡里面 再拿出去一只小的 放过来一只母鸡!

算法博大精深

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值