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