博主头像
7024w的自留地

觉宇宙之无穷,识盈虚之有数

蓝桥杯-三羊献瑞

方法1.采用for循环嵌套的暴力破解法

public static void 三羊献瑞(){
    for (int i = 1; i < 10; i++) {
        for (int j = 0; j < 10 ; j++) {
            for (int k = 0; k < 10; k++) {
                for (int l = 0; l < 10; l++) {
                    StringBuilder a1 = new StringBuilder();
                    a1.append(i); //三羊献瑞 1199
                    a1.append(j);
                    a1.append(k);
                    a1.append(l);
                    int a = Integer.parseInt(a1.toString());
                    for (int m = 1; m < 10; m++) {
                        for (int n = 0; n < 10; n++) {
                            for (int o = 0; o < 10; o++) {
                                StringBuilder a2 = new StringBuilder();
                                a2.append(m); //祥瑞生辉 9900
                                a2.append(l);
                                a2.append(n);
                                a2.append(o);
                                int b = Integer.parseInt(a2.toString());
                                int plus = a+b;       //三羊生瑞气 11099
                                //依次为
                                HashSet<Integer> abc = new HashSet<>();
                                if(String.valueOf(plus).length() == 5 && plus/10000 == i && plus/1000%10 == j && plus/100%10 == n && plus/10%10 == l){
                                    if(!abc.add(i) || !abc.add(j) || !abc.add(k) || !abc.add(l) || !abc.add(m) || !abc.add(n) || !abc.add(o) || !abc.add(plus%10)){
                                        continue;
                                    }
                                    System.out.println(a1);
                                    System.out.println(a2);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

结果为1085+9567=10652

方法2.采用算术法
三羊献瑞

  • 祥瑞生辉
    = 三羊生瑞气
  1. 进一位,则三肯定为1
  2. 三为1,则祥可能为9,8(进一位)
  3. 当祥为8时,羊为0,瑞不可能为10,否定。判断祥为9,羊为0

    1 0 献 x

  4. 9 x (x+1)辉
    =1 0 (x+1) x 气

4.此时如果生=x,不可能(重复),则生为x+1
5.此时从x=2开始枚举
x=2时
1 0 献 2
+ 9 2 3 辉
=1 0 3 2 气

献=9(舍去)或8, 2+辉=气进1位, 辉此时无法选择(重复)

x=3时
1 0 献 3
+ 9 3 4 辉
=1 0 4 3 气

献=9(舍去)或8,3+辉=气进一位,辉此时可以为7,此时气=0重复

x=4时
1 0 献 4
+ 9 4 5 辉
=1 0 5 4 气

献=9(舍去)或8,4+辉=气进一位,辉此时可以为7,此时气=1重复

x=5时
1 0 献 5
+ 9 5 6 辉
=1 0 6 5 气

献=9(舍去)或8,5+辉=气进一位,辉此时可以为7,此时气=2 成功

发表新评论