📅  最后修改于: 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$ 为范围内整数的个数。
本题需要遍历范围内的所有数字,并对每个数字进行判断,因此时间复杂度较高,但可以通过一些优化进行降低时间复杂度。