📜  范围 [L, R] 中的整数的数量,这些整数可以被它的数字的恰好 K 整除(1)

📅  最后修改于: 2023-12-03 15:27:47.021000             🧑  作者: Mango

题目介绍

给定整数范围 [L, R] 和恰好可被 K 整除的数字,求该范围内符合条件的整数的数量。

例如,当L = 10,R = 15,K = 2时,范围 [10, 15] 中有两个数字(10 和 12)可以被它的数字的恰好 2 整除。

解题思路

在本题中,我们需要求出范围内符合条件的整数的数量,其中符合条件的整数为可以被它的数字的恰好 K 整除的数字。

因此,我们需要遍历范围内的所有数字,并判断其是否符合条件。判断方法为将数字转换为字符串,然后遍历字符串中的每个字符,最后计算每个字符的值是否为 0,是否可以被 K 整除。

代码如下:

def count_numbers(L: int, R: int, K: int) -> int:
    count = 0
    for i in range(L, R+1):
        if i % K == 0:
            s = str(i)
            flag = 1
            for c in s:
                if c == '0' or i % int(c) != 0:
                    flag = 0
                    break
            if flag == 1:
                count += 1
    return count

时间复杂度为 $O(n \log n)$,其中 $n$ 为范围内整数的个数。

总结

本题需要遍历范围内的所有数字,并对每个数字进行判断,因此时间复杂度较高,但可以通过一些优化进行降低时间复杂度。