社区讨论
使用位运算符和直接乘除导致的结果差异
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 条回复,欢迎继续交流。
正在加载回复...