本文主要是介绍华为od最新算法题(100分题) 不含101的数(Java JS Python),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
小明在学习二进制时,发现了一类不含 101的数,也就是:
将数字用二进制表示,不能出现 101 。
现在给定一个整数区间 [l,r] ,请问这个区间包含了多少个不含 101 的数?
输入描述
输入的唯一一行包含两个正整数 l, r( 1 ≤ l ≤ r ≤ 10^9)。
输出描述
输出的唯一一行包含一个整数,表示在 [l,r] 区间内一共有几个不含 101 的数。
题目解析
本题如果用暴力法求解,很简单
JS
/* JavaScript Node ACM模式 控制台输入获取 */
const readline = require("readline");const rl = readline.createInterface({input: process.stdin,output: process.stdout,
});rl.on("line", (line) => {const [l, r] = line.split(" ").map(Number);console.log(getResult(l, r));
});function getResult(l, r) {let count = r - l + 1;for (let i = l; i <= r; i++) {if (Number(i).toString(2).indexOf("101") !== -1) {count--;}}return count;
}
但是本题的1 ≤ l ≤ r ≤ 10^9,也就是说
这篇关于华为od最新算法题(100分题) 不含101的数(Java JS Python)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!