在Python中检查L到R范围内两个数字的位是否彼此互补
假设我们有两个数字x和y以及给定的范围(左,右)。我们必须检查两个给定数字中从左到右的所有位是否彼此互补。我们必须记住,从右到左,因此最低有效位被认为在第一位置。
因此,如果输入像x=41y=54left=2right=5,那么输出将为True,因为41和54的二进制表示分别为101001和110110。x和y的范围2至5中的位是彼此互补的“1001”和“0110”。
为了解决这个问题,我们将遵循以下步骤-
温度:=xXORy
当temp范围(左,右)中的所有位均为1时,返回true;否则返回false
让我们看下面的实现以更好地理解-
示例
def are_all_setbits_in_range(n, left, right):
val = ((1 << right) - 1) ^ ((1 << (left - 1)) - 1)
new_value = n & val
if val == new_value:
return True
return False
def solve(x, y, left, right):
temp = x ^ y
return are_all_setbits_in_range(temp, left, right)x = 41
y = 54
left = 2
right = 5
print(solve(x, y, left, right))输入值
41, 54, 2, 5输出结果
True
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短