13-韩信点兵(算法)

来源:互联网 发布:手机消息提醒软件 编辑:程序博客网 时间:2024/06/05 08:14

问题:

韩信带兵不足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);}}}}


原创粉丝点击