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