百钱买百鸡问题

《 张丘建算经》 成书于公元 5 世纪, 作者是北魏人. 书中最后一道题堪称亮点, 通常也被称
为“百钱买百鸡”问题, 民间则流传着县令考问神童的佳话书中原文如下:
今有鸡翁一, 值钱五; 鸡母一, 值钱三; 鸡雏三, 值钱一; 百钱买鸡百只, 问鸡翁、 母、
雏各几何?
题目的意思是, 公鸡 5 文钱 1 只, 母鸡 3 文钱 1 只, 小鸡 1 文钱买 3 只, 现在用 100
文钱共买了 100 只鸡, 问: 在这 100 只鸡中, 公鸡、 母鸡和小鸡各是多少只? ( 设每种至少
一只)


思路:先列出已知条件 然后用编程语言把这已知条件说出来 哪些限定条件 哪些要满足的要求用编程语言写出来。
for($g=1;$g<=100;$g++){//先循环公鸡100只
    for($m=1;$m<=100,$m++){//循环母鸡100只
        for($x=1;$x<=100;$x++){//循环小鸡100只
            if($g+$m+$x == 100 && $g*5+$m*3+$x/3==100){//前面循环的3个数值要满足2个条件:公鸡加母鸡加小鸡数量等于100只并且公鸡一只等于5块,母鸡一只等于3块 小鸡一块钱能买3只 3个数值加起来钱数也要等于100元
                echo '公鸡:'.$g.','.'母鸡:'.$m.','.'小鸡:'.$x,'<br/>';
            }
        }
    }
}

可以优化

for($g = 1;$g<=100;$g++){//先循环公鸡18只  公鸡要5块钱一只 所以最多只能能够买20只 还有限定条件每个一种 所以还要减去一只母鸡和小鸡
    for($m = 1;$m<=100;$m++){//循环母鸡31只 母鸡3元一只 最多能买33只 减去一只公鸡和小鸡
        $x = 100-$g-$m; //因为限定条件说了每种至少一只 所以小鸡就等于100只减去公鸡和母鸡
        if($g*5+$m*3+$x/3 == 100){//前面说了3种加起来等于100只所以 2个条件前面的哪个条件就重复了 没必要
            echo '公鸡:'.$g.','.'母鸡:'.$m.','.'小鸡:'.$x,'<br/>';
        }
    }
}

posted @ 2016-11-18 22:36  出来混迟早要胖的  阅读(375)  评论(0编辑  收藏  举报