trang chủ / đề bài / seqconst

Xây Dựng Dãy

Đề bài

Mô tả

Cho hai số nguyên M và K. Hãy chọn một số nguyên dương N và xây dựng một dãy a gồm N số nguyên không âm thỏa mãn đồng thời ba điều kiện:

  • 1≤N≤100
  • a1+a2+…+aN=M
  • popcount(a1)⊕popcount(a2)⊕…⊕popcount(aN)=K

Ở đây popcount(x) là số bit 1 trong biểu diễn nhị phân của x (chẳng hạn popcount(11)=3 và popcount(16)=1), còn ⊕ là phép XOR theo bit.

Nếu không tồn tại dãy nào như vậy, hãy báo là không thể.

Bạn phải trả lời T bộ dữ liệu độc lập.

Dữ liệu vào

  • Dòng đầu chứa số nguyên T.
  • Mỗi dòng trong T dòng tiếp theo chứa hai số nguyên M và K của một bộ dữ liệu.

Dữ liệu ra

Với mỗi bộ dữ liệu, in kết quả theo thứ tự:

  • Nếu không tồn tại dãy thỏa mãn, in một dòng chứa −1.
  • Ngược lại, dòng thứ nhất in số nguyên N là độ dài dãy, dòng thứ hai in N số nguyên a1,a2,…,aN cách nhau bởi dấu cách.

Có thể có nhiều dãy hợp lệ; in ra dãy nào cũng được.

Ràng buộc

  • 1≤T≤5·103
  • 1≤M≤109
  • 1≤K≤31
  • 0≤ai≤M
  • Các cặp (M,K) trong cùng một bộ dữ liệu vào đôi một khác nhau.

Ví dụ

Input Output Giải thích
3
2 1
33 5
10 5
1
2
6
1 15 1 2 7 7
-1
Bộ 1: dãy [2] có tổng 2 và XOR popcount là 1. Bộ 2: tổng 1+15+1+2+7+7=33, XOR popcount là 1⊕4⊕1⊕1⊕3⊕3=5; các dãy khác như [3,23,7] cũng được chấp nhận. Bộ 3: không có dãy nào có tổng 10 mà XOR popcount bằng 5.
4
1 1
4 2
7 3
19 7
1
1
-1
4
1 3 1 2
3
1 3 15
Bộ 1: dãy [1]. Bộ 2: mọi dãy có tổng 4 đều cho XOR popcount khác 2. Bộ 3: 1⊕2⊕1⊕1=3 và tổng bằng 7. Bộ 4: 19 đúng bằng tổng nhỏ nhất có thể của một dãy đạt XOR popcount 7.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0