結果
| 問題 | No.1228 I hate XOR Matching | 
| コンテスト | |
| ユーザー |  tyawanmusi | 
| 提出日時 | 2020-07-24 15:43:01 | 
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 31 ms / 2,000 ms | 
| コード長 | 814 bytes | 
| コンパイル時間 | 145 ms | 
| コンパイル使用メモリ | 12,800 KB | 
| 実行使用メモリ | 11,008 KB | 
| 最終ジャッジ日時 | 2024-10-15 19:37:50 | 
| 合計ジャッジ時間 | 4,432 ms | 
| ジャッジサーバーID (参考情報) | judge3 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 4 | 
| other | AC * 31 | 
ソースコード
k,x=map(int,input().split())
if x==0:
  print("Yes")
  print(1)
  if k==0:print(1)
  else:print(0)
  exit()
if x==1:
  print("Yes")
  print(1)
  print(k)
  exit()
if k==0:x+=1
if 2**(x.bit_length()-1)!=x:exit(print("No"))
x=x.bit_length()-1
ans=[0]
x-=1
bitt=[0]*20
sub=[]
if k!=0:bitt[(k&-k).bit_length()-1]=-1
for i in range(20):
  if x>=4:
    if bitt[i]>=0 and bitt[i+1]>=0:
      if bitt[i]==2:x-=3
      else:x-=4
      bitt[i]=bitt[i+1]=2
  elif x>0:
    if bitt[i]==0:
      bitt[i]=1
      x-=1
  if x>=2 and  i>=2:
    if bitt[i-2]>=0 and bitt[i]>=0:
      x-=2
      sub.append((i-2,i))
for i in range(20):
  if bitt[i]>0:ans+=[2**i]*2
  if i>=1 and bitt[i-1]>=2 and bitt[i]>=2:
    ans+=[2**i+2**(i-1)]*2
for i,j in sub:ans+=[2**i+2**j]*2
if k!=0:ans.append(k)
print("Yes")
print(len(ans))
print(*ans)
            
            
            
        