蓝桥杯 java 凑算式 16年省赛Java组真题

题目

思路:

求有多少种解法 比如:6+8/3+952/714就是一种解法,5+3/1+972/486 是另一种解法

8/3+952/714是可以除尽的 但是后面一个不行 所以我们也要通分

代码:

复制代码
public class 凑算式 {
    static int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    static int cnt = 0;//记录解法

    // 判断 式子是否成立
    private static boolean check() {
        //A=a0 B=a1 c = a2    DEF=X GHI=Y
        // 分母=a2*y 分子=a1*y+a2*x
        //通分:((a1*y+a2*x/a1*y==0)&&a0+a1/b2)==10
        int x = a[3] * 100 + a[4] * 10 + a[5];
        int y = a[6] * 100 + a[7] * 10 + a[8];
        if ((a[1] * y + a[2] * x) %( a[2] * y) == 0 && a[0] + (a[1] * y + a[2] * x) / (a[2] *y) == 10) {
            return true;
        }
        return false;
    }

    static void f(int step) {
        // step=9说明已经排完了
        if (step == 9) {
            if (check()) {
                cnt++;
            }
        }
        // 填数 找不同的数的排列的模板写法
        for (int i = step; i < 9; i++) {
            int t = a[i];
            a[i] = a[step];
            a[step] = t;
            // 填完一个数之后递归填下一个
            f(step+1);
            // 回溯
            t = a[i];
            a[i] = a[step];
            a[step] = t;
        }
    }

    public static void main(String[] args) {
        f(0);
        System.out.println(cnt);
    }
}
相关推荐
一只机电自动化菜鸟14 小时前
一建机电备考笔记(34)焊接技术(设备与材料1)(含考频+题型)
笔记·学习·职场和发展·生活·学习方法
环流_14 小时前
Redis:epoll和IO多路复用
java·redis·mybatis
Chase_______14 小时前
Java基础语言 ④ :面向对象核心——构造方法、this关键字与对象内存模型详解
java·开发语言·面向对象·类与对象
欢璃14 小时前
表白墙案例
java·开发语言·jvm·spring boot·spring·maven·mybatis
‎ദ്ദിᵔ.˛.ᵔ₎14 小时前
Java 匿名内部类与 Lambda 表达式
java
hhhhhaaa14 小时前
Java 并发编程核心原理与生产级最佳实践
java·后端
cqwuliu14 小时前
Freemarker模板工具
java·开发语言
asdfg125896314 小时前
`(line1, line2) -> line1 + line2` 此Lambda 表达式的理解
java·开发语言
吃着火锅x唱着歌14 小时前
LeetCode 739.每日温度
算法·leetcode·职场和发展
AI人工智能+电脑小能手15 小时前
【大白话说Java面试题 第49题】【JVM篇】第9题:什么是双亲委派机制?介绍一下运作过程。?
java·开发语言·jvm