给定一个整数 C .让 d 是最小的整数,使得 2d 严格大于 C .
考虑所有非负整数对 (A,B) 使得 A,B<2d A⊕B=C (⊕ 表示按位异或运算)。求 A⋅B 的最大值 在所有这些对。 我已经尝试了下面的代码,但它给出了运行时 NZEC 错误。
def msb(c):
for i in range(63,0,-1):
if (c & (1<<i)):
return i
break
while(True):
try:
t = int(input())
for i in range(t):
c=int(input())
m=msb(c)
a=0
b=0
for j in range(m+1):
ci=(c>>j & 1)
if ci==0:
a=a | (1<<j)
b=b | (1<<j)
elif j==m:
a=a | (1<<j)
b=b & ~(1<<j)
elif ci==1:
a=a & ~(1<<j)
b=b | (1<<j)
print(a*b)
except EOFError:
break