问题:
韩信带兵不足100,
3人一行多一人,7人一行少俩人,5人一行排正好,问韩信带了多少人?
设y1为5人一行的列数。y1<=33列
y2为7人一行的列数。y2<=14列
y3为3人一行的列数。y3<=20列
计算总人数,然后互相则需要满足以下条件5y1=7y2-2;
5y1=3y3+1;
3y3=7y2-3;
/**
* 韩信点兵
* @author supermanxkq
*
*/
public class Test12 {
public static void main(String[] args) {
for (int y1 = 0; y1 <=33; y1++) {
for (int y2 = 0; y2 <= 14; y2++) {
for (int y3 = 0; y3 <= 20; y3++) {
if(5*y1==(7*y2-2)&&5*y1==(3*y3+1)&&3*y3==(7*y2-3)){
System.out.println("y1:"+y1+" y2:"+y2+" y3:"+y3);
}
}
}
}
}
}
由此可知总人数为:40人
第二种方法
/**
* 韩信点兵
*
* @author supermanxkq
*
*/
public class Test12 {
public static void main(String[] args) {
int a = 0, b = 0, c = 0;
for (int person = 0; person < 100; person++) {
a = person % 3;
b = person % 7;
c = person % 5;
if (a == 1 && b == 5 && c == 0) {
System.out.println("韩信点兵的人数为:" + person);
}
}
}
}