📅  最后修改于: 2023-12-03 15:26:39.816000             🧑  作者: Mango
编写一个程序,查询指定范围内的数字中,以其十进制或八进制表示形式包含数字K的数字的个数。
程序接受两个整数L和R,表示待查询数字的范围。其中,$0 \le L, R \le 10^9$,$L \le R$。
程序接受一个整数K,表示被查询的数字的包含数字。其中,$0 \le K \le 9$。
程序输出一个整数,表示查询结果。
输入:
10 20
1
输出:
3
被查询的数字范围为10-20,其中有三个数字(10,11,12)在十进制或八进制表示形式中包含数字1。
def digit_count(l, r, k):
count = 0
for i in range(l, r + 1):
if str(k) in str(i) or str(k) in oct(i)[2:]:
count += 1
return count
这段代码中使用了一个 for 循环遍历 L 到 R 的所有数字,并使用 str 和 oct 函数将数字转换为字符串和八进制字符串。在字符串中查找 K 并更新计数器 count。
其中 oct 的作用是将数字转换为八进制字符串,[2:] 表示去除前缀 '0o'。
这段代码在时间和空间复杂度上都不够优秀,但足以满足本题的要求。