题目:100匹马背100担粮。 大马一匹背3担,中马一匹背2担。小马2匹背一担。请编程输出所有满足条件的情况.
分析:
依题意:设大马匹数为X(匹),中马y(匹),小马z(匹).那么可以列出方程
x+y+z=100
3x+2y+z/2=100
0<=x<=33
0<=y<=50
0<=z<=100并且z必须能被2整除(因为一只小马背不动一担粮.)
其中x,y,z都是整数.
解出x,y,z
以上的思路用java来实现,如下:
class Horse { int x;//大马匹数 int y;//中马 int z;//小马 int i=0;//用于统计满足条件的个数 int count_horse;//马的总匹数 int count_foot;//粮食的总担数 public void Operation() { for(z=0;z<=100;z++) { for(y=0;y<=50;y++) { x=100-y-z; if( (x>=0) && (x<=33) && (y>=0) && (y<=50) && (z>=0) && (z<=100) && (z%2==0) ) { if( ((x+y+z)==100) && ((3*x+2*y+z/2)==100) ) { i++; System.out.println("第【"+i+"】种情况--大马:"+x+" 中马:"+y+" 小马:"+z); //检测结果是否满足题意 count_horse=x+y+z;//马的匹数 count_foot=3*x+2*y+z/2;//粮食的总担数 System.out.println("[检测]马的总匹数:"+count_horse+" 粮食的总担数:"+count_foot+"\n"); } } } } } public static void main(String[]args) { Horse h=new Horse(); h.Operation(); } }
打印结果: 第【1】种情况--大马:2 中马:30 小马:68 [检测]马的总匹数:100 粮食的总担数:100 第【2】种情况--大马:5 中马:25 小马:70 [检测]马的总匹数:100 粮食的总担数:100 第【3】种情况--大马:8 中马:20 小马:72 [检测]马的总匹数:100 粮食的总担数:100 第【4】种情况--大马:11 中马:15 小马:74 [检测]马的总匹数:100 粮食的总担数:100 第【5】种情况--大马:14 中马:10 小马:76 [检测]马的总匹数:100 粮食的总担数:100 第【6】种情况--大马:17 中马:5 小马:78 [检测]马的总匹数:100 粮食的总担数:100 第【7】种情况--大马:20 中马:0 小马:80 [检测]马的总匹数:100 粮食的总担数:100 */