1684838553 / arithmeticQuestions

程序员的算法趣题
2 stars 0 forks source link

数列的四则运算 #2

Open 1684838553 opened 2 years ago

1684838553 commented 2 years ago
大家小时候可能也玩过“组合车牌号里的 4 个数字最终得到 10”的游戏。
组合的方法是在各个数字之间插入四则运算的运算符组成算式,然后计算算式的结果
(某些数位之间可以没有运算符,但最少要插入 1 个运算符)。
  1234 → 1+ 2×3 - 4= 3
  9876 → 9×87+ 6= 789
假设这里的条件是,组合算式的计算结果为“将原数字各个数位上的数逆序排列得到的数”,
并且算式的运算按照四则运算的顺序进行(先乘除,后加减)。那么位于 100~999,符合条件的有以下几种情况。
351 → 3×51= 153
621 → 6×21= 126
886 → 8×86= 688

求位于 1000~9999,满足上述条件的数。

1684838553 commented 2 years ago
function getFunction() {
    var op = ['+', '-', '*', '/', '']
    for (let i = 1000; i < 10000; i++) {
        var num = String(i)
        var len = op.length
        for (let j = 0; j < len; j++) {
            for (let k = 0; k < len; k++) {
                for (let l = 0; l < len; l++) {
                    let val = num.charAt(3) + op[j] + num.charAt(2) + op[k] + num.charAt(1) + op[l] + num.charAt(0)
                    if (val.length > 4) {
                        // 一定要插入一个运算符
                        if (i == eval(val)) {
                            console.log(val + '=' + i)  //  5*9*31=1395
                        }
                    }
                }
            }
        }
    }
}
getFunction()