华为机试 - 不含101的数
admin
2024-03-12 06:37:00
0

目录

题目描述

输入描述

输出描述

用例

题目解析

算法源码


题目描述

小明在学习二进制时,发现了一类不含 101的数,也就是:

将数字用二进制表示,不能出现 101 。
现在给定一个整数区间 [l,r] ,请问这个区间包含了多少个不含 101 的数?

输入描述

输入的唯一一行包含两个正整数 l, r( 1 ≤ l ≤ r ≤ 10^9)。

输出描述

输出的唯一一行包含一个整数,表示在 [l,r] 区间内一共有几个不含 101 的数。

用例

输入1 10
输出8
说明区间 [1,10] 内, 5 的二进制表示为 101 ,10的二进制表示为 1010 ,因此区间 [ 1 , 10 ] 内有 10−2=8 个不含 101的数。
输入10 20
输出7
说明区间 [10,20] 内,满足条件的数字有 [12,14,15,16,17,18,19] 因此答案为 7。

题目解析

本题如果用暴力法求解,很简单

/* 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,也就是说区间范围最大是 1 ~ 10^9,那么上面O(n)时间复杂度的算法会超时。

因此,我们需要找到一个性能更优的算法。

本题需要使用数位DP算法,具体逻辑原理请看

数位DP - 带3的数_伏城之外的博客-CSDN博客

数位DP - 带49的数_伏城之外的博客-CSDN博客

算法源码

/* 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);const count = digitSearch(R) - digitSearch(L - 1);console.log(count);
});function digitSearch(num) {const arr = num.toString(2).split("").map(Number);const f = new Array(arr.length).fill(0).map(() => new Array(2).fill(0).map(() => new Array(2)));return dfs(0, true, f, arr, 0, 0);
}function dfs(p, limit, f, arr, pre, prepre) {if (p === arr.length) return 1;if (!limit && f[p][pre][prepre]) return f[p][pre][prepre];const max = limit ? arr[p] : 1;let count = 0;for (let i = 0; i <= max; i++) {if (i === 1 && pre === 0 && prepre === 1) continue;count += dfs(p + 1, limit && i === max, f, arr, i, pre);}if (!limit) f[p][pre][prepre] = count;return count;
}

相关内容

热门资讯

阿里等三巨头抢朴朴超市?电商要... 作者|白婉嘉 编辑|文定 一场竞购传闻,把朴朴超市推到了台前。 5月25日,多家媒体报道称,阿里、美...
宁波土耳其购房移民机构怎么选? 宁波地区有土耳其购房移民需求的客户群体主要集中在企业主、金融从业者、跨境电商经营者和专业人士等,其核...
芯跳加速时这一红利ETF却半个... 5月28日,芯片半导体和红利方向同步走强,杠杆资金上演哑铃投资新范式。截至10:27,中证红利ETF...
强强携手共谋发展——京东电商平... 5月20日,京东电商平台相关负责人莅临菏泽华运食品公司,开展实地考察与合作洽谈。菏泽华运食品公司总经...
千问正在“夺舍”阿里云 文|象先志 5月26日,阿里云在新加坡面向海外市场发布全新AI产品官网Qwen Cloud、Age...
原创 5... 5月27日黄金价格小幅回落,国内基础金价和中国黄金基础金价均为994.0元/克,黄金回收价为977元...
中汇人寿潍坊中心支公司被罚15... 蓝鲸新闻5月28日讯,近日,国家金融监督管理总局潍坊监管分局公布行政处罚决定书,对中汇人寿保险股份有...
天源迪科:董事长陈友解除留置 天源迪科午间公告,今日,公司收到江西省景德镇乐平市监察委员会签发的《解除留置通知书》,已对公司董事长...
胡衡华,辞去重庆市长职务 5月28日,重庆市人民代表大会常务委员会发布关于接受胡衡华辞职的决定: 据《中华人民共和国地方各级人...
社媒帖子点燃欧洲半导体妖股 晶... 财联社5月28日讯(编辑 赵昊)周三(5月27日),一个鲜为人知的欧洲芯片制造商股价一度暴涨逾70%...
原创 A... 今日A股三大指数集体下跌,截至收盘,上证指数跌1.25%,深证成指跌0.88%,创业板指涨0.07%...
大盘下跌白酒板块又涨了!行业仍... 大盘下跌的时候,白酒板块又“如无意外”地成为资金关注的目标。 5月27日A股跌破4100点时,白酒板...
消费基金重仓科技 合规还是越界... 记者 洪小棠 截至2026年5月27日,A股市场的结构性行情正在以一种近乎撕裂的方式演绎。一边是近年...
人工智能板块延续调整,人工智能... 5月27日,人工智能板块延续调整,截至收盘,中证人工智能主题指数下跌1.8%,中证科创创业人工智能指...
原创 长... 国内存储芯片龙头长鑫科技在5月27日顺利通过科创板上市委审议,距离正式挂牌交易仅剩最后一步。这不仅仅...
南京跑出“数字人第一股”! 8... 「IPO全观察」栏目聚焦首次公开募股公司,报道企业家创业经历与成功故事,剖析公司商业模式和经营业绩,...
“飞轮”之上:财通资管是这样炼... 2001年,知名管理学者吉姆·柯林斯出版了著作《飞轮效应》。这部书描绘了一个常见的商业现象: 在同样...
嘉戎技术收购,宁德时代背书 见习记者刘墨 值得关注的是,宁德时代深度参与本次交易,不仅通过旗下产业基金参与并购主体,宁德时代实控...