Truy Vấn XOR
Đề bài
Mô tả
Ban giám khảo giấu một hoán vị của các số nguyên từ đến . Bạn chỉ biết độ dài .
Gọi là hoán vị nghịch đảo của , tức là với mọi .
Thao tác duy nhất bạn được phép làm là chọn hai chỉ số và (không nhất thiết khác nhau) và hỏi giá trị , trong đó là phép XOR theo bit.
Có thể có những hoán vị không phân biệt được với hoán vị ẩn, ngay cả khi bạn hỏi hết cả truy vấn. Cụ thể, một hoán vị với nghịch đảo được gọi là không phân biệt được với nếu
Nhiệm vụ của bạn là đếm số hoán vị không phân biệt được với hoán vị ẩn (tính cả chính nó) và in ra một hoán vị bất kỳ trong số đó, sử dụng không quá truy vấn.
Hoán vị ẩn được cố định từ trước và không phụ thuộc vào các truy vấn của bạn.
Giao thức tương tác
Đây là bài toán tương tác. Chương trình của bạn giao tiếp với hệ thống chấm qua đầu vào/ra chuẩn.
Đầu tiên, chương trình đọc số nguyên .
Sau đó bạn có thể thực hiện hai loại thao tác:
? i j(với ): Hỏi giá trị . Hệ thống trả về một số nguyên duy nhất là giá trị đó.Kết thúc: in ra ba dòng
- dòng đầu chứa ký tự
!, - dòng thứ hai chứa số nguyên là số hoán vị không phân biệt được với hoán vị ẩn,
- dòng thứ ba chứa số nguyên là một hoán vị không phân biệt được với hoán vị ẩn.
Sau khi in đáp án, chương trình phải kết thúc ngay. Việc in đáp án không tính là một truy vấn.
- dòng đầu chứa ký tự
Bạn được phép hỏi tối đa truy vấn dạng ?. Nếu vượt quá giới hạn này, bài làm bị đánh giá là sai.
Quan trọng: Sau mỗi lần in ra, bạn phải flush output:
- C++:
cout << endl;hoặccout.flush(); - Python:
print(..., flush=True)
Ràng buộc
- Số truy vấn tối đa:
Ví dụ
| Chương trình | Hệ thống | Giải thích |
|---|---|---|
| 3 | Hệ thống cho biết . Hoán vị ẩn là , nên | |
| ? 0 0 | 0 | |
| ? 1 1 | 0 | |
| ? 1 2 | 3 | |
| ? 0 2 | 2 | |
| ? 2 1 | 3 | |
| ? 2 0 | 2 | |
| ! 1 0 1 2 |
Không có hoán vị nào khác cho cùng bộ câu trả lời, nên |
| Chương trình | Hệ thống | Giải thích |
|---|---|---|
| 4 | Hệ thống cho biết . Hoán vị ẩn là , nên | |
| ? 0 1 | 2 | |
| ? 1 2 | 3 | |
| ? 2 3 | 2 | |
| ? 3 3 | 0 | |
| ? 3 2 | 2 | |
| ? 2 1 | 3 | |
| ? 1 0 | 2 | |
| ? 0 0 | 0 | |
| ! 2 3 1 2 0 |
Hoán vị cho cùng kết quả với cả truy vấn, nên . In ra hoán vị nào trong hai hoán vị đó cũng được |
Bình luận