设大、中、小马数量分别为x、y、z,那么:
3x+2y+z/2=100
x+y+z=100
简单置换下,可以得到5x+3y=100,马数不可能出现负数,也不为0,所以x<=19(19=(100-3)/5)
int x=1,y=0,z=0,tmp=0;// 预定义几个变量。如果不是为了代码易读,tmp可省略
for (; x < 20; x++) {
tmp = 100 - 5 * x;
y = tmp / 3;
z = 100 - x - y;
if (z % 2 != 0) continue;// 小马必须是两匹在一起,所以z需是偶数
if (6 * x + 4 * y + z != 200) continue;// 检查是否满足第一公式
System.out.printf("[x,y,z]=%02d,%02d,%02d;6x+4y+2z=%d;x+y+z=%d\r\n"//
, x, y, z, (6 * x + 4 * y + z), (x + y + z));
}
/**
*
* @author IT学习者-螃蟹
*
*/
public class Horse {
public static void main(String[] args){
for(int big =0;big<100;big++){
for(int midle=0;midle<100;midle++){
for(int small=0;small<100;small=small+2){
if((big*3 + midle*2 + small *1/2 ==100) && (big+midle+small==100)){
System.out.println("大:"+big+";中 :"+midle +"小:"+small);
}
}
}
}
}
}
运行结果:
大:2;中 :30小:68
大:5;中 :25小:70
大:8;中 :20小:72
大:11;中 :15小:74
大:14;中 :10小:76
大:17;中 :5小:78
大:20;中 :0小:80
for(int i = 0 ;i < 34 ; i++){
for(int j = 0 ; j <= 50 ; j++){
for(int k = 0 ; k <= 100 ; k++){
if(3 * i + 2 * j + 0.5 * k == 100)
System.out.println("大:"+i+";中 :"+j +"小:"+K);
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int dama = 0 , zhongma = 0;
double xiaoma = 0;
for(dama = 0 ; dama < 100 ; dama++){
for(zhongma = 0 ; zhongma < 100 ; zhongma++){
xiaoma = 100 - dama - zhongma;
if((3 * dama + 2 * zhongma + xiaoma /2) == 100){
System.out.println("大马 = "+dama);
System.out.println("中马 = "+zhongma);
System.out.println("小马 = "+(int)xiaoma);
System.out.println("---------");
}
}
}
}
你这问题好多答案的是要列举所有答案吗。