社区讨论

使用位运算符和直接乘除导致的结果差异

P3612[USACO17JAN] Secret Cow Code S参与者 3已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@lo38d1om
此快照首次捕获于
2023/10/24 02:27
2 年前
此快照最后确认于
2023/10/24 02:27
2 年前
查看原帖
如题,按理来说,n >>= 1与n /= 2应该是同样的效果,可下面的代码在不使用位运算符时居然会产生错误的结果,这是为什么?
PYTHON
# 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)])

回复

3 条回复,欢迎继续交流。

正在加载回复...