使用位运算符和直接乘除导致的结果差异
查看原帖
使用位运算符和直接乘除导致的结果差异
903176
Trainer_Marvin楼主2023/1/31 03:54

如题,按理来说,n >>= 1与n /= 2应该是同样的效果,可下面的代码在不使用位运算符时居然会产生错误的结果,这是为什么?

# P3612
# 分冶
n = input().split()
a, b = n[0], int(n[1])
x = len(a)
while x < b:
    x <<= 1  # 此处如为x *= 2会WA
while b > len(a):
    x >>= 1  # 此处如为x /= 2会WA
    if b == (x+1):
        b = x
    elif b <= x:
        pass
    else:
        b = ((b-1) - x)
print(a[int(b-1)])

2023/1/31 03:54
加载中...