zoukankan      html  css  js  c++  java
  • 16递归:猜算术

    【题目】 
    看下面的算式: 
    □□ x □□ = □□ x □□□ 
    它表示:两个两位数相乘等于一个两位数乘以一个三位数。 
    如果没有限定条件,这样的例子很多。 
    但目前的限定是:这9个方块,表示1~9的9个数字,不包含0。 
    该算式中1至9的每个数字出现且只出现一次! 
    比如: 
    46 x 79 = 23 x 158 
    54 x 69 = 27 x 138 
    54 x 93 = 27 x 186 
    ….. 
    请编程,输出所有可能的情况! 
    注意: 
    左边的两个乘数交换算同一方案,不要重复输出! 
    不同方案的输出顺序不重要

    import java.math.BigInteger;
    import java.util.*;
    
    public class Lanq {
        //public static double pi = 3.1415926535897932;
    
        public static void main(String[] args) {
    
            Scanner sc = new Scanner(System.in);
            solve();
        }
    
        public static void solve() {
            Set s = new TreeSet();
            int a = 0, b = 0, c = 0, d = 0;
            boolean[] bool = new boolean[1000];
            bool[a] = false;
            bool[b] = false;
            bool[c] = false;
            bool[d] = false;
            bool [a+b]=false;
            for (a = 10; a <= 99; a++)
                for (b = 10; b <= 99; b++)
                    for (c = 10; c <= 99; c++)
                        for (d = 100; d <= 999; d++) {
                            if (a * b == c * d) {
                                int[] p = new int[9];
                                p[0] = a / 10;
                                p[1] = a % 10;
                                p[2] = b / 10;
                                p[3] = b % 10;
                                p[4] = c / 10;
                                p[5] = c % 10;
                                p[6] = d / 100;
                                p[7] = d / 10 % 10;
                                p[8] = d % 10;
                                Arrays.sort(p);
                                int cnt = 0;
                                for (int i = 0; i < 8; i++) {
                                    if (p[i] + 1 == p[i + 1])
                                        cnt++;
                                }
    
    
                                if (cnt == 8 && p[0] == 1 && p[8] == 9) {
                                     if(s.contains(a)&&s.contains(b)&&s.contains(a+b))
                                         continue;
                                     else
                                        System.out.println(a + "*" + b + "=" + c + "*" + d);
                                        //System.out.println(b + "*" + a + "=" + c + "*" + d);
                                       s.add(a);s.add(b);s.add(a+b);
    
    
                                }
    
    
                            }
                        }
        }
    }
    

      

  • 相关阅读:
    Ubuntu中php.ini修改运行内存
    Parse error: syntax error, unexpected end of file in * 的解决办法
    php函数积累
    php值传递和引用传递
    kohana导入和导出
    gleez框架获得时间控件
    php获得时间段的月
    图片垂直居中代码
    三角代码
    HTML5 SVG可爱笑脸动画
  • 原文地址:https://www.cnblogs.com/passion-sky/p/8551508.html
Copyright © 2011-2022 走看看