思路:例如44321这个数,在数组a[]中有1 2 3 4 4。如果这个数是神奇数,
那么数组中的所有数相加后得sum,sum%2一定为0。然后我们要确定44321是否 可以分为符合题意的两组,这里用到了递归。
const readline = require("readline")
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
rl.on("line", function (n) {
let arr = n.split(" ")
let l = Number(arr[0]),
r = Number(arr[1])
let count = 0
for (let i = l; i <= r; i++) {
if (chartAt(i)) {
count++
}
}
console.log(count)
})
function chartAt(num) {
let res = num
let arr = []
let index = 0
let sum = 0
while (num > 0) {
let val = num % 10
arr[index++] = val
num = parseInt(num / 10)
sum += val
}
if (sum % 2 === 1) {
return false
}
return isMerge(arr, index, sum / 2)
}
function isMerge(arr, n, sum) {
if (sum === 0) return true
if (sum < 0) return false
let state = false
for (let i = 0; i < n; i++) {
state = isMerge(arr.slice(i + 1), n - 1 - i, sum - arr[i])
if (state) break
}
return state
}
rl.on("close", function () {
process.exit()
})



京公网安备 11010502036488号