1 问题
从我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
2 方法
假设鸡翁x只,鸡母y只,鸡雏z只。单看一种鸡得出x,y,z的取值范围
0<=x<=20
0<=y<=33
0<=z<=100
根据题目要求可得出以下式子是成立的
x+y+z=100
5*x+3*y+z/3=100
这里采用循环嵌套的方式穷举出x,y,z的值
在第一层循环,表示鸡翁的范围,定义初始表达式的变量为0,判断的条件取x<=20;
在第一层循环,表示鸡母的范围,定义初始表达式的变量为0,判断的条件取y<=33;
在第一层循环,表示鸡雏的变量为z=100-x-y
判断表达式z%3==0和表达式5*x+3*y+z/3==100是否同时成立,如果成立则输出x,y,z的值,即对应鸡翁,鸡母,鸡雏的值。
public class draft { public static void main(String[] args) { //表示鸡翁的范围 for (int x=0;x<=20;x++){ //表示鸡母的范围 for (int y=0;y<=33;y++){ //表示鸡雏的变量 int z = 100 - x - y; if (z%3==0 && 5*x+3*y+z/3==100){ System.out.println("鸡翁:"+x+";鸡母:"+y+";鸡雏:"+z); } } } } } |
3 结语
在百钱买百鸡的问题中,通过使用循环嵌套的方式穷举出各种鸡的数量。该方法的时间复杂度较高。