📌  相关文章
📜  第 K 个最小的正整数 Y 使得它与 X 的和等于它与 X 的按位或(1)

📅  最后修改于: 2023-12-03 14:56:39.903000             🧑  作者: Mango

题目介绍

给定两个正整数 X 和 K,找到第 K 个最小正整数 Y,使得 Y + X = Y | X。

解题思路

观察题目,我们可以将 Y + X = Y | X 变形为 Y = (Y | X) - X。

我们需要找到第 K 个最小的正整数 Y,因此可以使用一个循环来枚举 Y 的值。对于每个 Y,我们检查它是否满足 Y + X = Y | X:

def find_kth_integer(X: int, K: int) -> int:
    count = 0  # 用于计数已经找到的满足条件的正整数 Y 的个数
    for Y in range(1, X+1):
        if Y == (Y | X) - X:
            count += 1
            if count == K:
                return Y

    return -1  # 找不到第 K 个正整数 Y

时间复杂度为 O(X),需要枚举 X 个 Y。

测试样例

输入:X = 6, K = 3

输出:5

备注

如果不存在第 K 个正整数 Y,返回 -1。