3954. 区间内的兼容数字之和 I
来源第 505 场周赛 Q1难度简单分数1210
题目描述
给你两个整数 n 和 k。
如果一个 正 整数 x 同时满足以下两个条件,则称其为 兼容 整数:
abs(n - x) <= k(n & x) == 0
返回所有 兼容 整数 x 的总和。
注意:
- 这里,
&表示 按位与 运算符。 - 整数
i和j之间的 绝对 差定义为abs(i - j)。
示例 1:
输入: n = 2, k = 3
输出: 10
解释:
兼容整数为:
x = 1,因为abs(2 - 1) = 1且2 & 1 = 0。x = 4,因为abs(2 - 4) = 2且2 & 4 = 0。x = 5,因为abs(2 - 5) = 3且2 & 5 = 0。
因此,答案为 1 + 4 + 5 = 10。
示例 2:
输入: n = 5, k = 1
输出: 0
解释:
区间 [4, 6] 中没有兼容整数。因此,答案为 0。
提示:
1 <= n <= 1001 <= k <= 100
解法
方法一:模拟
思考
区间 \([n-k,n+k]\) 长度只有 \(O(k)\), \(k\le 100\),枚举每个 \(x\) 判断 \(n\) 与 \(x\) 按位与是否为 \(0\) 即可。为 \(0\) 则累加 \(x\),下界与 \(1\) 取最大以免非正数。
无需更复杂的数位讨论。
我们在 \([\max(1, n - k), n + k]\) 的范围内枚举 \(x\),如果 \(n\) 与 \(x\) 的按位与结果为 \(0\),则将 \(x\) 累加到答案中。
枚举结束后,返回答案即可。
时间复杂度 \(O(k)\),空间复杂度 \(O(1)\)。
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
1 2 3 4 5 6 7 8 9 10 | |
1 2 3 4 5 6 7 8 9 10 11 | |