• java实现猜算式


    题目:猜算式
    
    你一定还记得小学学习过的乘法计算过程,比如:
    x   15
    ------
      273
    ------
      
    请你观察如下的乘法算式
    
        ***
    x   ***
    --------
        ***
       ***
      ***
    --------
      *****
      
    星号代表某位数字,注意这些星号中,
    0~9中的每个数字都恰好用了2次。
    (如因字体而产生对齐问题,请参看图p1.jpg)
    
    请写出这个式子最终计算的结果,就是那个5位数是多少?
    
    注意:只需要填写一个整数,不要填写任何多余的内容。比如说明文字。
    
    import java.util.ArrayList;
    import java.util.Collections;
    
    public class Main {
        
        public boolean judge(int temp1, int temp2, int temp3, int temp4, int temp5, int temp6) {
            ArrayList<Integer> list = new ArrayList<Integer>();
            while(temp1 > 0) {
                list.add(temp1 % 10);
                temp1 = temp1 / 10;
            }
            while(temp2 > 0) {
                list.add(temp2 % 10);
                temp2 = temp2 / 10;
            }
            while(temp3 > 0) {
                list.add(temp3 % 10);
                temp3 = temp3 / 10;
            }
            while(temp4 > 0) {
                list.add(temp4 % 10);
                temp4 = temp4 / 10;
            }
            while(temp5 > 0) {
                list.add(temp5 % 10);
                temp5 = temp5 / 10;
            }
            while(temp6 > 0) {
                list.add(temp6 % 10);
                temp6 = temp6 / 10;
            }
            Collections.sort(list);
            if(list.size() == 20) {
                int j = 0;
                for(int i = 0;i < 20;i = i + 2, j++) {
                    if(list.get(i) == j && list.get(i + 1) == j)
                        continue;
                    else 
                        return false;
                }
                if(j == 10)
                    return true;
            }
            return false;
        }
        
        public boolean judge1(int n) {
            if(n >= 1000 || n < 100)
                return false;
            return true;
        }
        
        
        public void printResult() {
            for(int i = 100;i <= 999;i++) {
                int temp1 = i;
                for(int j = 100;j <= 999;j++) {
                    int temp2 = j;
                    int temp3 = temp2 % 10 * temp1;
                    int temp4 = temp2 / 10 % 10 * temp1;
                    int temp5 = temp2 / 100 * temp1;
                    int temp6 = temp2 * temp1;
                    if(judge1(temp3) && judge1(temp4) && judge1(temp5) && temp6 > 9999 && temp6 < 100000) {
                        if(judge(temp1, temp2, temp3, temp4, temp5, temp6)) {
                            System.out.println("temp1 = "+temp1+", temp2 = "+temp2+", temp6 = "+temp6);
                        }
                    } else {
                        continue;
                    }
                }
            }
        }
        
        public static void main(String[] args) {
            Main test = new Main();
            test.printResult();
        }
    }
    
  • 相关阅读:
    前端,DJ
    打印九九乘法表
    求数组中最大值和最小值
    求数组中最大值和次大值
    数据库 Mysql 使用,优化,索引
    List、Map、Set的区别与联系
    1001个整数,每个数范围1到1000,求出重复的数字。
    一个正整数是否等于因数之和
    滑动验证 和滑动图片验证JS
    cmd中mvn命令,出现No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13078166.html
Copyright © 2020-2023  润新知