📌  相关文章
📜  查询以其十进制或八进制表示形式包含数字K的范围内的数字进行计数(1)

📅  最后修改于: 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'。

这段代码在时间和空间复杂度上都不够优秀,但足以满足本题的要求。