博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
16递归:猜算术
阅读量:4616 次
发布时间:2019-06-09

本文共 2266 字,大约阅读时间需要 7 分钟。

【题目】 

看下面的算式: 
□□ 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);                            }                        }                    }    }}

  

转载于:https://www.cnblogs.com/passion-sky/p/8551508.html

你可能感兴趣的文章
关于七牛进行图片添加文字水印操作小计
查看>>
DataSource数据库的使用
查看>>
Luogu4069 SDOI2016 游戏 树链剖分、李超线段树
查看>>
Java的内部类真的那么难以理解?
查看>>
一文搞懂Java环境,轻松实现Hello World!
查看>>
hash实现锚点平滑滚动定位
查看>>
也谈智能手机游戏开发中的分辨率自适应问题
查看>>
关于 IOS 发布的点点滴滴记录(一)
查看>>
《EMCAScript6入门》读书笔记——14.Promise对象
查看>>
CSS——水平/垂直居中
查看>>
Eclipse连接mysql数据库jdbc下载(图文)
查看>>
Python中Selenium的使用方法
查看>>
三月23日测试Fiddler
查看>>
20171013_数据库新环境后期操作
查看>>
poj 1654 && poj 1675
查看>>
运维派 企业面试题1 监控MySQL主从同步是否异常
查看>>
Docker 版本
查看>>
poj 1753 Flip Game
查看>>
在深信服实习是怎样的体验(研发测试岗)
查看>>
Linux免密码登陆
查看>>