📌  相关文章
📜  小于或等于N且可被K整除的最大数字(1)

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

求小于或等于N且可被K整除的最大数字

这是一个经典的问题,可以用循环或者数学公式来解决。

解法一:循环枚举

我们可以从N开始往下枚举,直到找到第一个能被K整除的数字。因为要找最大的数,所以如果找到了一个可被K整除的数,就直接返回它。

def find_largest_number(N, K):
    for i in range(N, 0, -1):
        if i % K == 0:
            return i
    return -1  # 如果没有找到,则返回-1表示找不到符合条件的数字

时间复杂度:O(N)

空间复杂度:O(1)

解法二:数学公式

我们可以先计算出N能被K整除的最大倍数,然后再减去K即可得到最大的小于或等于N且可被K整除的数字。

def find_largest_number(N, K):
    largest_multiple_of_K = (N // K) * K
    if largest_multiple_of_K <= N:
        return largest_multiple_of_K
    else:
        return -1  # 如果没有找到,则返回-1表示找不到符合条件的数字

时间复杂度:O(1)

空间复杂度:O(1)

总结

我们可以看到,数学公式的时间复杂度更优,但是两种方法的空间复杂度都是O(1),所以我们建议使用数学公式来解决这个问题。