trang chủ / bài tập / compatnum

Số tương thích

Đề bài

Mô tả

Hai số nguyên xy được gọi là tương thích nếu phép AND bit của chúng bằng 0, tức là x&y=0. Ví dụ, 90=1011010236=1001002 là tương thích vì 10110102&1001002=0; còn 3=1126=1102 thì không, vì 112&1102=102.

Cho dãy số nguyên a1,a2,,an. Với mỗi phần tử của dãy, hãy cho biết nó có tương thích với một phần tử nào đó của dãy hay không, và nếu có thì chỉ ra một phần tử như vậy.

Vì mọi ai1 nên không phần tử nào tương thích với chính giá trị của nó, nhưng phần tử được chỉ ra chỉ cần là một giá trị có xuất hiện trong dãy (nó có thể trùng giá trị với nhiều vị trí khác nhau).

Dữ liệu vào

  • Dòng đầu chứa số nguyên n: số phần tử của dãy.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an. Các giá trị trong dãy có thể trùng nhau.

Dữ liệu ra

In ra n số nguyên ans1,ans2,,ansn cách nhau bởi dấu cách.

  • Nếu ai không tương thích với bất kỳ phần tử nào của dãy thì ansi=1.
  • Ngược lại, ansi là một giá trị bất kỳ xuất hiện trong dãy thoả mãn ai&ansi=0.

Nếu có nhiều đáp án đúng, in ra đáp án nào cũng được.

Ràng buộc

  • 1n3·105
  • 1ai4·106

Ví dụ

Input Output Giải thích
2
90 36
36 90 90&36=0 nên hai phần tử tương thích với nhau.
4
3 6 3 6
-1 -1 -1 -1 Mọi cặp giá trị trong dãy đều có bit chung: 3&3=3, 3&6=2, 6&6=6.
5
10 6 9 8 2
-1 9 6 6 9 10=10102 đụng bit với mọi phần tử nên nhận 1. Với 6=01102 thì 9=10012 hợp lệ; với 8=10002 có thể lấy 6 hoặc 2, đáp án khác cũng được chấp nhận.

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 csc 6.12.0.200 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 kotlinc 2.4.10 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 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 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0