import java.util.Scanner;
public class Ceshi{
public static void main(String[] args){
int chuji;
for(int gongji=0; gongji<=20; gongji++){
for(int muji=0; muji<=33; muji++){
chuji = 100-gongji-muji;
if(gongji*5+muji*3+chuji/3.0== 100){ //如果不用3.0会产生近似值结果/* 如int 77 / int 3 == 原本应该等于25.666666 但实际结果会转换成int 25,这就恰好满足要求
但int 77 / double 3.0 结果就为double 具体请参考“不同数据类型运算自动转换遵循的规则”*/
System.out.printf("公鸡%d只,母鸡%d只,雏鸡%d只\n", gongji, muji, chuji);
}
}
}
}
}
/*(gongji*5+muji*3+chuji/3== 100)产生的结果(明显不对)
----------------------------------------------------------
公鸡0只,母鸡25只,雏鸡75只
公鸡3只,母鸡20只,雏鸡77只
公鸡4只,母鸡18只,雏鸡78只
公鸡7只,母鸡13只,雏鸡80只
公鸡8只,母鸡11只,雏鸡81只
公鸡11只,母鸡6只,雏鸡83只
公鸡12只,母鸡4只,雏鸡84只
--------------------------------------------------------*/
/*(gongji*5+muji*3+chuji/3.0== 100)产生的结果(正确)
----------------------------------------------------------
公鸡0只,母鸡25只,雏鸡75只
公鸡4只,母鸡18只,雏鸡78只
公鸡8只,母鸡11只,雏鸡81只
公鸡12只,母鸡4只,雏鸡84只
--------------------------------------------------------*/
98百钱买百鸡
(依据:《张丘建算经》;编诗:陈钢)
百钱买来百只鸡,公母小鸡数不齐;
母一钱三公钱五,三雏钱一价格低。
公鸡母鸡各多少?还有几只是小鸡?
【解说】这是依据我国古代《张丘建算经》上的“百鸡问题”编写而成的。
“百鸡问题”是一道闻名于世界的题目,很有价值,也很有趣味。题目的原文是:
“今鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。凡百钱买鸡百只,问:鸡翁、母、雏各几何?”
题目中的“鸡翁”、“鸡母”、“鸡雏”分别指“公鸡”、“母鸡”和“小鸡”。“雏”的读音与“除”音相同,“雏”即幼禽,这里指小鸡。若用通俗的话来说,题目的意思可以是:
用100文钱买来100只鸡,公鸡5文钱一只,母鸡3文钱一只,小鸡1文钱3只。问:在这100只鸡中,公鸡、母鸡、小鸡各是多少只?
对于这道题目的解答,《算经》上给出了如下的解法“术文”与答案:
“术曰:鸡翁每增四,鸡母每减七,鸡雏每益三,即得。”“答曰:鸡翁四,值钱二十;鸡母十八,值钱五十四;鸡雏七十八,值钱二十六。又答:鸡翁八,值钱四十;鸡母十一,值钱三十三;鸡雏八十一,值钱二十七。又答:鸡翁十二,值钱六十;鸡母四,值钱十二;鸡雏八十四,值钱二十八。”
这一简要术文,意思可作如下表示:
公鸡每增加4只:4→8→12→……
则 母鸡应每减7只:18→11→4→……
小鸡应每增3只:78→81→84→……
看得出来,《算经》的解法是先求得第一组(竖的第一列)答案:
公鸡4只,母鸡18只,小鸡78只。
然后采用“四、七、三增减法”,去求其他两组答案。但是,第一组答案是怎样求得的呢?这种“增减方法”又是怎样找到的呢?书上没作任何交代。据后人推测,这可能都是由实验得到的。因为
(增加数) (减少数)
4+3 =7(只)——增减后,鸡的数目相等;
所以,只有这样,得数才比较容易搭配出来。
在《张丘建算经》以前的古算书上,从来没有出现过这种“一题三答”的题目。这一点,是张丘建在数学上的伟大贡献。
现在解这种题目,一般都是运用“不定方程”的知识来解答的。那么没有学过代数知识的读者,能否将它解答出来呢?
回答是肯定的。我们完全可以用一种比较简单的方法,来推算出题目的答案。
公鸡0只,母鸡25只,雏鸡75只
这样一来,我们就得到了一组与原来题意不相符合的答案:
为使答案符合题意,最好使公鸡数增加,不使其为0。办法是:在这一组答案的基础上,找出一种推算办法——“每次当公鸡增加4只,母鸡减少7只,小鸡增加3只”的时候,三种鸡的总数100只和它们需要的总钱数100文,都不会发生变化。