百钱买百鸡问题 php版本

/*
 * 百钱买百鸡问题
 * 
 * 我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?
 * 翻译过来,意思是公鸡一个五块钱,母鸡一个三块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?
 * 
 * 思路就是吧数学公式翻译成计算机代码,大多数列方程求职的都可以使用此类方法,主要是要判断参数的取值范围
 * 
 * 设公鸡x只 一只5块钱,母鸡y只 一只3块钱,小鸡z只 一只1/3块钱
 * 
 *  A:5x+3y+1/3z = 100
 *  B:x+y+z = 100
 *  C:0 <= x <= 20
 *  D:0 <= y <= 33
 *  E:66 < z <= 100
 * 
 */

$g =0;
for($x=0;$x<=20;$x++){
    for($y=0;$y<=33;$y++){
         for($z=66;$z<=100;$z=$z+3){
                if(5*$x+3*$y+1/3*$z==100 && $x+$y+$z==100){
                   echo $x.'-'.$y.'-'.$z.'<br><br>';
                   $g++;
               }

               }
         }  
}

echo $g;

//或者减少循环次数的方法,其实还有很多优化的余地,看你需要减少时间,还是减少代码的复杂度
$g =0;
for($x=0;$x<=20;$x++){
    for($y=0;$y<=33;$y++){
         $z=100-$x-$y;
                if(5*$x+3*$y+1/3*$z==100 && $z%3==0){
                   echo $x.'-'.$y.'-'.$z.'<br><br>';
                   $g++;
               }

               }
        
}

echo $g;


//结果

//0-25-75
//4-18-78
//8-11-81
//12-4-84
//
//4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值