D-Array 构造

(1 min to read)

题意

给定两个数x和y,要求用最少的n个数,使得他们的异或和=x,求和=y

做法

这道题在cf上有类似的

  • x=y=0 输出0
  • x=y!=0 输出1
  • x>y 输出-1
  • (y-x)&1 输出-1
  • 如果可以用(y+x)/2 和(y-x)/2,就输出2
  • 否则输出3 x, (y-x)/2, (y-x)/2

顺便记一下python多组输入(竟然跑了6s多。。)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
while True:
try:
x, y = map(int, input().split())
if x==y:
print(0) if(x==0) else print(1)
elif x>y:
print(-1)
elif (y-x)&1:
print(-1)
elif ((y+x)//2) ^ ((y-x)//2) == x:
print(2)
else:
print(3)
except:
break