Tên lửa
Đề bài
Mô tả
Đây là một bài toán tương tác (interactive).
Một con tàu vũ trụ đang bay tới sao Hỏa. Gọi là khoảng cách còn lại tới sao Hỏa. Bạn không biết , chỉ biết rằng với cho trước, và là số nguyên dương.
Bạn có thể hỏi máy tính của tàu. Mỗi câu hỏi là một số nguyên với . Câu trả lời đúng cho câu hỏi này là:
- nếu ;
- nếu ;
- nếu .
Tiếc là máy tính đã hỏng nên không phải lúc nào cũng trả lời đúng. Cụ thể, nếu câu trả lời đúng là thì máy tính sẽ trả lời khi nó nói thật, và trả lời khi nó nói dối.
Máy tính có một dãy gồm phần tử, mỗi phần tử bằng hoặc . Nó duyệt dãy này theo vòng tròn: câu hỏi thứ nhất dùng , câu hỏi thứ hai dùng , …, câu hỏi thứ dùng , câu hỏi thứ lại dùng , và cứ thế tiếp tục. Nếu phần tử đang dùng bằng thì máy tính nói thật, nếu bằng thì nó nói dối. Bạn không biết dãy , chỉ biết độ dài của nó.
Bạn được phép đặt tối đa câu hỏi. Khoảng cách không thay đổi trong suốt quá trình hỏi.
Lời giải của bạn chỉ được chấp nhận nếu thực sự nhận được câu trả lời từ máy tính, kể cả khi đã được xác định duy nhất từ các câu trả lời trước đó.
Nếu đọc được , bạn phải kết thúc chương trình ngay lập tức. Nếu đọc được , nghĩa là câu hỏi không hợp lệ hoặc bạn đã vượt quá câu hỏi; khi đó cũng phải kết thúc chương trình ngay.
Dữ liệu vào
Dòng đầu tiên chứa hai số nguyên và — khoảng cách lớn nhất có thể tới sao Hỏa và độ dài của dãy .
Sau mỗi câu hỏi, đọc một dòng chứa câu trả lời của máy tính: một trong các giá trị , , hoặc .
Dữ liệu ra
Mỗi câu hỏi in trên một dòng: một số nguyên với .
Sau mỗi lần in, bạn phải flush output (ví dụ cout << endl hoặc cout.flush() trong C++, flush=True trong Python).
Ràng buộc
- Tối đa câu hỏi
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 2 1 -1 0 |
1 1 3 |
Ở đây và , tức máy tính lần lượt nói thật, nói dối, nói thật, nói dối, … Hỏi lần đầu: đúng là , nói thật nên trả lời . Hỏi lần hai: đúng vẫn là , nhưng nói dối nên trả lời ; qua hai câu này ta biết . Hỏi : đúng là , mà nên dù nói thật hay nói dối vẫn trả lời . Đây chỉ là một cách hỏi hợp lệ; mọi dãy câu hỏi khác kết thúc bằng câu trả lời trong không quá lượt đều được chấp nhận. |
| 2 1 1 1 0 |
1 1 2 |
Ở đây và , máy tính luôn nói thật. Câu hỏi đầu tiên xác định . Sau đó tìm kiếm nhị phân trên : hỏi được trả lời nên , rồi hỏi được trả lời . |
Bình luận