Thi thử vòng 2 2022 - Đoán số

Trong máy tính có 2 số \(N\)\(C\). Bạn được cho biết trước số \(N\), nhưng số \(C\) bị giấu đi. Nhiệm vụ của bạn là đoán được số \(C\).

Để giúp bạn đoán được số \(C\), bạn được quyền giao tiếp với máy tính không quá \(64\) lần. Trong mỗi lần, bạn sẽ gửi cho máy tính một số nguyên từ \(1\) đến \(N\); tuy nhiên bạn không thể gửi cùng một số trong hai lượt khác nhau. Sau mỗi lần bạn gửi con số, hệ thống sẽ trả về một trong hai xâu \(YES\) hoặc \(NO\). Ở lượt đầu tiên, máy tính sẽ gửi ngẫu nhiên cho bạn một trong hai xâu này. Kể từ lượt thứ 2 trở đi, máy sẽ trả về \(YES\) khi và chỉ khi chênh lệch của số được gửi lần này và số được gửi ở lần ngay trước đó không bé hơn \(C\), và \(NO\) nếu ngược lại. Cụ thể, nếu bạn gửi số \(X\) trong lần thứ \(i - 1\) và số \(Y\) trong lần thứ \(i\), bạn sẽ nhận về \(YES\) ở lượt thứ \(i\) khi và chỉ khi \(|X - Y| \geq C\) và sẽ nhận về \(NO\) nếu \(|X - Y| < C\).

Trong nhiệm vụ này, mỗi test \(T\) thử nghiệm riêng biệt, để qua được một test bạn phải đoán đúng giá trị \(C\) trong các thử nghiệm đó.

Tương tác

Đây là bài toán tương tác. Mỗi test gồm \(T\) test con.

  • Đầu tiên, bạn cần đọc vào giá trị \(T\).
  • \(T\) test sẽ được thực hiện tuần tự, trong đó ở mỗi test:
  • Bạn đọc vào số nguyên \(N\)
  • Truy vấn ? X: chương trình sẽ trả lời YES nếu chênh lệnh giữa hai phần tử trong 2 lần gửi gần nhất lớn hơn hoặc bằng C và NO trong trường hợp ngược lại. Các giá trị của \(X\) trong các lần gọi hàm phải đôi một phân biệt, nếu không, bạn sẽ nhận được kết quả Wrong Answer. Trong mỗi test con, bạn được hỏi truy vấn này không quá \(64\) lần.
  • Trả lời = C: đưa ra giá trị \(C\) cần tìm. Bạn chỉ được trả lời một lần với mỗi test con.

Constants

\(1 \leq C \leq N \leq 10^{18}, 1 \leq T \leq 1000\)

Subtask

  • Subtask 1 (9 điểm): \(N \leq 64\)
  • Subtask 2 (13 điểm): \(N \leq 125\)
  • Subtask 3 (21 điểm): \(N \leq 1000\)`
  • Subtask 4 (24 điểm): \(N \leq 10^9\)
  • Subtask 5 (33 điểm): \(N \leq 10^{18}\)

Ví dụ

Máy chấm Chương trình nộp Giải thích
2 \(T=2\), test này có 2 test con
10 \(N=10\)
? 2
YES Câu trả lời đầu tiên không quan trọng
? 7
YES \(C \leq \vert7 - 2\vert\)
? 4
NO \(C > \vert4 - 7\vert\)
= 4 Bạn đoán \(C = 4\), và may mắn đúng
100 Bắt đầu test con thứ hai, \(N=100\)
? 2
YES Câu trả lời đầu tiên không quan trọng
? 7
NO \(C > \vert7 - 2\vert\)
? 4
NO \(C > \vert4 - 7\vert\)
= 10 Bạn đoán \(C = 10\), và may mắn đúng
...Xem thêm

Số gần hoàn hảo

Trong bài toán này, chúng ta quan tâm đến tổng các ước số chặt của một số tự nhiên. Các ước số chặt của một số tự nhiên \(N\) là các số \(K\) nhỏ hơn hẳn \(N\), sao cho \(N\) chia hết cho \(K\). Ví dụ, tổng của các ước số của 18 là:

\(S(18) = 1 + 2 + 3 + 6 + 9 = 21\)

Một số hoàn hảo \(N > 0\) là số mà tổng các ước số chặt \(S(N)\) của chính nó bằng \(N\). Ví dụ số 6 và 28 là số hoàn hảo:

\(S(6) = 1 + 2 + 3 = 6\),
\(S(28) = 1 + 2 + 4 + 7 + 14 = 28\)

Thực chất các số hoàn hảo rất số hiếm. Vì vậy ở đây chúng ta quan tâm đến các số gần hoàn hảo, nghĩa là tổng các ước chặt của \(N\) không quá xa \(N\).

Yêu cầu: Cho trước hai số \(L\)\(D\) (\(2 \le L \le 10^6, 0 \le D \le 10^6\)) hãy tìm số các số nguyên dương nhỏ hơn \(L\) sao cho độ chênh lệch giữa nó và tổng các ước chặt của nó không vượt quá \(D\). Ví dụ, với \(L = 10, D = 1\), ta tìm được 5 số thỏa mãn yêu cầu: 1, 2, 4, 6 và 8.

Input

  • Gồm 2 dòng, dòng đầu tiên chứa số nguyên \(L\), dòng tiếp theo chứa số nguyên \(D\).

Output

  • Ghi ra một số duy nhất là số các số tìm được.

Example

Test 1

Input
10
1
Output
5
...Xem thêm

Hình chữ nhật 0 1

Cho một bảng kích thước \(M \times N\), được chia thành lưới ô vuông đơn vị \(M\) dòng \(N\) cột (\(1 \le M, N \le 1000\))

Trên các ô của bảng ghi số 0 hoặc 1. Các dòng của bảng được đánh số \(1, 2,..., M\) theo thứ tự từ trên xuống dưới và các cột của bảng được đánh số \(1, 2,..., N\) theo thứ tự từ trái qua phải

Yêu cầu Hãy tìm một hình chữ nhật gồm các ô của bảng thoả mãn các điều kiện sau:

  • 1 - Hình chữ nhật đó chỉ gồm các số 1
  • 2 - Cạnh hình chữ nhật song song với cạnh bảng
  • 3 - Diện tích hình chữ nhật là lớn nhất có thể

Input

  • Dòng 1: Ghi hai số \(M, N\)
  • \(M\) dòng tiếp theo, dòng thứ \(i\) ghi \(N\) số mà số thứ \(j\) là số ghi trên ô (\(i, j\)) của bảng

Output

  • Gồm 1 dòng duy nhất ghi diện tích của hình chữ nhật tìm được

Example

Test 1

Input
11 13
0 0 0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 1 1 1 0 0 0 0 0 0
0 0 1 1 1 1 1 1 1 0 0 0 0
0 0 1 1 1 1 1 1 1 0 0 0 0
0 1 1 1 1 1 1 1 1 1 0 0 0
1 1 1 1 1 1 1 1 1 1 1 0 0
0 1 1 1 1 1 1 1 1 1 0 0 0
0 0 1 1 1 1 1 1 1 0 0 0 0
0 0 1 1 1 1 1 1 1 0 0 0 0
0 0 0 0 1 1 1 0 0 0 0 1 1
0 0 0 0 0 1 0 0 0 0 0 1 1     
Output
49
...Xem thêm

Kaninho tập đếm với xâu

\(Kaninho\) được cho một xâu \(S\) chỉ gồm các kí tự latin thường, và nhiệm vụ của anh ấy là đếm xem có bao nhiêu xâu con (gồm những phần tử liên tiếp) thoả mãn số lần xuất hiện của mỗi kí tự trong xâu con đó không lớn hơn \(K\)

Input

  • Dòng thứ nhất chứa số \(t(1\le t\le 100)\) - Thể hiện số testcase

  • \(t\) test tiếp theo, mỗi dòng chứa một test có dạng như sau:

  • Dòng thứ nhất chứa xâu \(S\) - Biết rằng, độ dài xâu \(S\) không vượt quá \(10^5\)

  • Dòng thứ hai chứa số \(K\) \((1\le K\le 10^5)\)

Output

  • Ứng với mỗi testcase, in ra đáp án cần tìm

Scoring

  • Subtask \(1\) (\(37.5\%\) số điểm): \(1\) \(\le\) |S| \(\le 20\) ,\(1\) \(\le\) \(K\) \(\le 5\).

  • Subtask \(2\) (\(62.5\%\) số điểm): không có điều kiện gì thêm.

Example

Test 1

Input
1
abc
1
Output
6
Note
  • Ứng với testcase \(1\): Ta có \(6\) xâu con thoả mãn là : \(a,b,c,ab,bc,abc\)
...Xem thêm