问题描述
一个整数如果由相同数字构成,可以称为完美整数;比如说1、11、333就是完美整数,12、19、101就是不完美的整数。
现在想知道,在区间 [x, y] 中有多少个整数是完美整数。
输入格式
每个样例有一行,是整数 x 和 y;(1 ≤ x ≤ y ≤ 10^9)
输出格式
每一个样例一行,是整数 m,表示区间 [x, y] 中有 m 个整数是完美整数。
输入样例1
1 10
输出样例1
9
输入样例2
2 22
输出样例2
10
数据范围
1 ≤ t ≤ 1000 1 ≤ x ≤ y ≤ 10^9
解题:
function countPerfectNumbers(x, y) {
let count = 0; // 记录完美整数的数量
// 枚举从 1 到 9 的每一个基数
for (let digit = 1; digit <= 9; digit++) {
let num = digit; // 当前完美整数
// 不断生成 1 位到 9 位的完美整数
while (num <= y) {
if (num >= x) {
count++; // 如果完美整数在 [x, y] 范围内,计数
}
num = num * 10 + digit; // 扩展生成下一位完美整数
}
}
return count;
}
function main() {
// Add your test cases here
console.log(countPerfectNumbers(1, 10) === 9);
console.log(countPerfectNumbers(2, 22) === 10);
}
main();