JavaScript中百鸡百钱问题

题目要求

用一百钱买一百只鸡,其中:公鸡5钱1只、母鸡3钱1只、仔鸡3只1钱。一百钱必须正好花完,并且每种鸡都要有。

代码实现

最简单的循环:

for(var a = 1 ; a <= 100 ; a++){
  for(var b = 1 ; b <= 100 ; b++){
     for(var c = 1 ; c <= 100 ; c++){
         if(a+b+c == 100 && a*5 + b*3 + c/3 == 100){
           console.log( `公鸡是${a}只,母鸡是${b}只,仔鸡是${c}只`);
        }
     }
   }
}

实现结果

共有三种结果

优化算法

1、因为所有的鸡一共是100只,如果公鸡和母鸡数量已经确定,那么仔鸡一定是 (100-a-b)只。
2、一只公鸡是5钱,现在只有100钱,理论上公鸡最多是20只,并且母鸡和仔鸡也必须有,所以公鸡的数量最多是小于20只。
3、一只母鸡是3钱,现在只有100钱,理论上母鸡最多是33只,并且母鸡和仔鸡也必须有,所以母鸡的数量最多是小于33只。

 // 公鸡最多20只,所以是<20
for(var a = 1 ; a < 20 ; a++){
   for(var b = 1 ; b < 33 ; b++){
      // 一共100只鸡,仔鸡数量=100-公鸡数-母鸡数
      var c = 100 - a - b;
        // 3种鸡,一共一百钱
      if(a*5 + b*3 + c/3 == 100){
          console.log( `公鸡是${a}只,母鸡是${b}只,仔鸡是${c}只`);
      }
   }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值