Tập hợp bất biến qua XOR

Đề bài

Mô tả

Cho tập hợp S gồm n số nguyên phân biệt. Với một số nguyên dương k, ta thay mỗi phần tử sS bởi sk ( là phép XOR theo bit), thu được tập hợp {sksS}.

Hãy tìm số nguyên dương k nhỏ nhất sao cho tập hợp thu được trùng đúng với tập hợp ban đầu, tức là {sksS}=S. Do đây là tập hợp nên thứ tự các phần tử không quan trọng: {1,2,3}{2,1,3} là cùng một tập hợp.

Nếu không tồn tại k nào như vậy, hãy in ra 1. Lưu ý k phải dương, nên k=0 không được chấp nhận dù nó luôn giữ nguyên tập hợp.

Ví dụ, với S={1,3,4}k=2 ta thu được {3,1,6}S; còn với S={0,1,2,3}k=1 thì tập hợp giữ nguyên.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t là số bộ dữ liệu.
  • Mỗi bộ dữ liệu gồm hai dòng: dòng đầu chứa số nguyên n là số phần tử của S, dòng thứ hai chứa n số nguyên phân biệt s1,s2,,sn.

Dữ liệu ra

In ra t dòng, dòng thứ i là đáp án cho bộ dữ liệu thứ i: giá trị k nguyên dương nhỏ nhất thỏa mãn, hoặc 1 nếu không tồn tại.

Ràng buộc

  • 1t1024
  • 1n1024
  • 0si<1024, các si trong cùng một bộ dữ liệu là phân biệt
  • Tổng n trên tất cả các bộ dữ liệu không vượt quá 1024

Ví dụ

Input Output Giải thích
6
4
1 0 2 3
6
10 7 14 8 3 12
2
0 2
3
1 2 3
6
1 4 6 10 11 12
2
0 1023
1
4
2
-1
-1
1023
Bộ 1: k=1 biến {1,0,2,3} thành {0,1,3,2}, đúng tập ban đầu. Bộ 3: k=1 cho {1,3}{0,2}, còn k=2 cho {2,0} nên đáp án là 2. Bộ 4 và bộ 5 không có k dương nào thỏa mãn.
4
2
0 1023
1
5
2
0 512
4
1 2 4 7
1023
-1
512
3
Bộ 2 có đúng một phần tử: 5k=5 chỉ khi k=0, mà k phải dương nên in 1. Bộ 4: k=3 hoán đổi 1247.

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.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0