冥月影 发表于 2019-7-30 10:28

被一道小学生的题目打败了,求大佬

本帖最后由 冥月影 于 2019-8-14 17:18 编辑

今天无聊看小学的暑假园地,发现了这样一道题,以为能简单做出来的,就试了一下,结果。。。


// 附上我极其丑陋的代码。。。求大佬给个解题思路。。。能给个完成代码看一下更好,毕竟我很菜。。。
根据大佬给的思路终于做出来了,贴上我乱的一匹代码给各位大佬吐槽。。。
public class Main{

        public static void main(String[] args) {
                // TODO 自动生成的方法存根
                /**
               * 年年X岁岁=花相似
               * 岁岁÷年年=人÷不同
               * 上面两道算式中,有八个不同的汉字,它们分别代表0、1、2、4、5、6、8、9八个数字。你能求出上面两道算式来吗?
               *
               * n * 11 * s * 11 == hxs
               * s * 11 / n * 11 == r / bt
               *
               * s * bt = r * n
               * bt = r * n / s
               */
                       
                for (int n = 1; n <= 9; n++) {
                        for (int s = 1; s <= 9; s++) {
                                for (int r = 0; r <= 9; r++) {
                                        int hxs = n * s * 121;
                                        int bt = r * n / s;
                                        if (flag(n, s, hxs, r, bt)) {
                                                System.out.printf("%d * %d = %d\n%d / %d = %d / %d", n * 11, s * 11, hxs, s * 11, n * 11, r, bt);
                                        }
                                }
                        }
                }
               
        }
       
        /**
       * 判断数字是否有重复
       * @param num
       * @return
       */
        public static boolean flag (int...num) {
                int index = 0;
                int[] list = new int;
                // 把多位数化成个位数
                for (int n : num) {
                        // 花相似大于1000直接退出
                        if (n > 999) {
                                return false;
                        }
                        while (n > 9) {
                                if (n % 10 != 7 && n % 10 != 3) {       
                                        list = n % 10;
                                }
                                n /= 10;
                        }
                        if (n != 7 && n != 3) {               
                                list = n;
                        }
                }       
                // 判断数组内容是否重复
                for (int i : list) {
                        int count = 0;
                        for (int j : list) {
                                if (i == j) {
                                        count++;
                                        if (count > 1) {
                                                return false;
                                        }
                                }
                        }
                }       
                return true;
        }

}

18368727273 发表于 2019-7-30 10:39

本帖最后由 18368727273 于 2019-7-30 10:41 编辑

对不起 打扰了 回错了

LanQ 发表于 2019-7-30 10:39

有意思,我也试试!{:1_918:}
等会上代码

陆逸然 发表于 2019-7-30 10:40

44*22=968
22/44=5/10

chenfilkman 发表于 2019-7-30 10:42

22*44=968
22/44=10/5

xiaowenjk 发表于 2019-7-30 10:42

对不起,打扰了,告辞

水爷 发表于 2019-7-30 10:45

打扰了 点错了 回错了

Chenzi 发表于 2019-7-30 10:46

前几天看我妹妹作业上也有这个题,我当时也不会做,是一个一个算出来的,现在这小学生的题都这么难了吗?

╰ァBy﹎鑫鑫 发表于 2019-7-30 10:47

打扰了 点错了 回错了

dedegoodboy 发表于 2019-7-30 10:48

好奇的点进来,完全看不懂:wwqwq
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: 被一道小学生的题目打败了,求大佬