EZINTER
Xem PDFĐây là bài toán interactive.
Các bạn có thể tìm hiểu về dạng này này tại đây.
ami có một số \(n, n\leq10000\). Các bạn sẽ không biết số này. Các bạn cần đoán số này dùng không quá 30 thao tác sau:
- Các bạn có thể hỏi ami một dãy số \(A\) gồm \(k\) phần tử nguyên dương \((k\leq5000)\). ami sẽ trả về một số bất kì \(A_i\) trong dãy số mà \(n\) chia hết cho \(A_i\) (\(n \% A_i = 0\)).
Để hỏi ami, các bạn cần in ra câu hỏi có dạng sau:
? k A_1 A_2 A_3 ... A_k
Ví dụ, để hỏi dãy có \(4\) phần tử là \(1\ 2\ 3\ 4\), các bạn cần in ra ? 4 1 2 3 4 (dấu ngoặc kép chỉ để nhấn mạnh).
Đương nhiên, sau khi in ra câu hỏi, các bạn cần phải xuống dòng và flush câu hỏi này. Sau đó ami sẽ trả lời lại các bạn, câu trả lời có dạng sau:
- \(x\).
Nếu \(x = -1\), điều này có nghĩa rằng câu hỏi mà các bạn hỏi là không hợp lệ. Các bạn cần dừng chương trình ngay và nhận kết quả là "Wrong answer". Nếu chương trình không dừng lại, các bạn sẽ nhận được một thông báo bất kì, vì các bạn đang tương tác với ami đã đi gánh team.
Nếu \(x = 0\), điều này có nghĩa rằng, không tồn tại \(A_i\) mà \(n\) chia hết cho \(A_i\).
Nếu \(x > 0\), ami sẽ đảm bảo rằng \(n\) chia hết cho \(A_x\).
Sau khi các bạn đã đoán ra số \(n\), các bạn cần thông báo cho ami. Thông báo như sau:
! n
Ví dụ, số các bạn đoán là \(69\), các bạn cần thông báo ! 69 (dấu ngoặc kép chỉ để nhấn mạnh).
Example
Test 1
Input
1
2
4
3
0
Output
? 4 4 2 3 1
? 4 1 2 3 4
? 4 1 2 3 4
? 4 1 2 3 4
? 4 69 96 69 96
! 12
Cách tính điểm
Để dễ dàng cho các bạn, nếu ami cần \(a\) câu hỏi, các bạn hỏi \(b\) và \(b \leq 30\) câu thì số điểm nhận được là \(\max(1, \frac{a}{b})\). Nếu \(b > 30\), các bạn sẽ nhận được 0 điểm.
Kỳ thi:
- lqdoj010 (15 Tháng bảy, 2020)
Bình luận (3)