HSG lớp 12 Hà Nội 2025-2026 (Bảng B)
SỞ GIÁO DỤC VÀ ĐÀO TẠO
HÀ NỘI
ĐỀ CHÍNH THỨC
(Đề thi có 04 trang)
KỲ THI CHỌN HSG THÀNH PHỐ VÀ CHỌN ĐỘI TUYỂN HSG DỰ THI QUỐC GIA CÁC MÔN VĂN HOÁ
Lớp 12 THPT năm học 2025 - 2026
Môn thi: Tin học (Bảng B) - Ngày thi: 22 tháng 9 năm 2025
Thời gian làm bài: 180 phút
Tổng quan đề thi
Phần tiêu đề “Tổng quan đề thi”| STT | Tên bài | Tên tệp chương trình | Tên tệp dữ liệu vào | Tên tệp kết quả ra | Điểm |
|---|---|---|---|---|---|
| Bài 1 | Số báo danh | SBD.* | SBD.INP | SBD.OUT | 5,0 |
| Bài 2 | Chất hữu cơ | CHC.* | CHC.INP | CHC.OUT | 5,0 |
| Bài 3 | Đếm đoạn con | DDC.* | DDC.INP | DDC.OUT | 4,0 |
| Bài 4 | Xâu đặc biệt | XDB.* | XDB.INP | XDB.OUT | 3,0 |
| Bài 5 | Tìm kho báu | TKB.* | TKB.INP | TKB.OUT | 3,0 |
Chú ý: Dấu * được thay thế bởi CPP, PY của ngôn ngữ lập trình được sử dụng tương ứng là C/C++ hoặc Python.
Bài 1. Số báo danh (5,0 điểm)
Phần tiêu đề “Bài 1. Số báo danh (5,0 điểm)”Trong một kỳ thi, số báo danh của thí sinh có định dạng như sau: "CC-NNN.NN". Trong đó:
- Hai ký tự đầu tiên là chữ cái tiếng Anh in hoa từ ‘A’ đến ‘Z’;
- Ký tự thứ ba là ký tự ’-’;
- Tiếp theo là ba ký tự chữ số (từ ‘0’ đến ‘9’);
- Ký tự thứ bảy là ký tự ’.’;
- Cuối cùng là hai ký tự chữ số (từ ‘0’ đến ‘9’).
Do quá trình nhập liệu thủ công, số báo danh có thể bị sai định dạng. Cho một xâu mô tả một số báo danh cần kiểm tra. Các ký tự trong xâu được đánh số bắt đầu từ 1.
Yêu cầu: Hãy xác định số báo danh đó đúng định dạng hay không. Nếu số báo danh đúng định dạng thì in ra 0, ngược lại nếu số báo danh không đúng định dạng thì in ra vị trí ký tự đầu tiên bị sai định dạng.
Dữ liệu vào từ tệp văn bản SBD.INP:
- Một dòng duy nhất gồm xâu ký tự có độ dài không quá 50 là số báo danh cần kiểm tra.
Kết quả ghi ra tệp văn bản SBD.OUT:
- Một số nguyên duy nhất là kết quả của bài toán.
Ví dụ:
| SBD.INP | SBD.OUT |
|---|---|
AC.123-45 | 3 |
AB-123 | 7 |
AB-123.45 | 0 |
AB-123.45.678 | 10 |
Bài 2. Chất hữu cơ (5,0 điểm)
Phần tiêu đề “Bài 2. Chất hữu cơ (5,0 điểm)”Cho một chuỗi ký tự mô tả công thức hóa học của một chất hữu cơ chỉ gồm 3 loại ký tự ‘C’, ‘H’, ‘O’ (tương ứng với các nguyên tố Carbon, Hydrogen, Oxygen) và các chữ số.
Liền sau mỗi nguyên tố có thể là một số nguyên có giá trị không vượt quá 10¹² mô tả số lượng nguyên tử tương ứng với nguyên tố đó (nếu không có số nguyên liền sau mỗi nguyên tố thì có thể hiểu là số lượng nguyên tử tương ứng với nguyên tố đó bằng 1).
Ví dụ một số công thức hoá học như sau: C6H12O6, CH3OH, C2H5OH, …
Yêu cầu: Cho các giá trị nguyên tử khối của các nguyên tố như sau: C = 12, H = 1, O = 16. Hãy tính phân tử khối của chất hữu cơ được mô tả bởi chuỗi ký tự đã cho.
Dữ liệu vào từ tệp văn bản CHC.INP:
- Một dòng duy nhất gồm chuỗi ký tự có độ dài không vượt quá 10⁵ mô tả công thức hóa học của một chất hữu cơ, chỉ gồm 3 loại ký tự ‘C’, ‘H’, ‘O’ và các chữ số.
Kết quả ghi ra tệp văn bản CHC.OUT:
- Một số nguyên dương duy nhất là kết quả của bài toán.
Ví dụ:
| CHC.INP | CHC.OUT | Giải thích |
|---|---|---|
CH3OH | 32 | Phân tử khối của chất hữu cơ là: 12 + 1 × 3 + 16 + 1 = 32. |
C6H12O6 | 180 | Phân tử khối của chất hữu cơ là: 12 × 6 + 1 × 12 + 16 × 6 = 180. |
C2H5OH | 46 | Phân tử khối của chất hữu cơ là: 12 × 2 + 1 × 5 + 16 + 1 = 46. |
Ràng buộc:
- Có 60% số test ứng với 60% số điểm: số lượng nguyên tử tương ứng với nguyên tố có giá trị trong đoạn [1, 9];
- 40% số test còn lại ứng với 40% số điểm không có ràng buộc thêm.
Bài 3. Đếm đoạn con (4,0 điểm)
Phần tiêu đề “Bài 3. Đếm đoạn con (4,0 điểm)”Cho dãy số gồm N số nguyên A₁, A₂, …, A_N có giá trị thuộc tập hợp {0, 1, 2, 3}.
Yêu cầu: Đếm số lượng các đoạn con gồm các số nguyên liên tiếp của dãy số sao cho:
- Gồm đúng ba loại giá trị;
- Số lần xuất hiện của các loại giá trị bằng nhau.
Dữ liệu vào từ tệp văn bản DDC.INP:
- Dòng đầu tiên gồm số nguyên dương N (N ≤ 10⁶) là số lượng số trong dãy;
- Dòng thứ hai gồm N số nguyên a₁, a₂, …, a_N (0 ≤ aᵢ ≤ 3) mô tả dãy số.
Kết quả ghi ra tệp văn bản DDC.OUT:
- Một dòng duy nhất gồm một số nguyên là số đoạn con thoả mãn.
Ví dụ:
| DDC.INP | DDC.OUT | Giải thích |
|---|---|---|
110 1 2 1 2 0 3 1 0 3 1 | 9 | - Có 7 đoạn con độ dài 3 thoả mãn là: [0, 1, 2], [1, 2, 0], [2, 0, 3], [0, 3, 1], [3, 1, 0], [1, 0, 3], [0, 3, 1]. - Có 2 đoạn con độ dài 6 thoả mãn là [0, 1, 2, 1, 2, 0], [0, 3, 1, 0, 3, 1]. - Tổng có 9 đoạn con thỏa mãn. |
Ràng buộc:
- Có 50% số test ứng với 50% số điểm có N ≤ 100;
- 30% số test khác ứng với 30% số điểm có N ≤ 1000;
- 20% số test còn lại ứng với 20% số điểm không có ràng buộc gì thêm.
Bài 4. Xâu đặc biệt (3,0 điểm)
Phần tiêu đề “Bài 4. Xâu đặc biệt (3,0 điểm)”Trong bảng chữ cái tiếng Anh, các ký tự nguyên âm là: ‘a’, ‘e’, ‘o’, ‘u’, ‘i’, các ký tự còn lại là phụ âm. Mỗi ký tự đều có một mã ASCII là một số nguyên dương: mã ASCII của ký tự ‘a’ là 97, mã ASCII của ký tự ‘b’ là 98, …, mã ASCII của ký tự ‘z’ là 122.
Cho một xâu ký tự S chỉ gồm các chữ cái in thường trong bảng chữ cái tiếng Anh và một số nguyên K. Xét một xâu con liên tiếp của S: gọi X là tổng mã ASCII của các ký tự nguyên âm trong xâu con, gọi Y là tổng mã ASCII của các ký tự phụ âm trong xâu con. Xâu con được coi là xâu đặc biệt nếu thỏa mãn:
- X > 0;
- Y > 0;
- 0 ≤ X − Y ≤ K;
- Tất cả các nguyên âm đều nằm ở một phía của xâu con. Ví dụ: “aexyz”, “you”, “aeiout”.
Yêu cầu: Hãy đếm số lượng xâu con liên tiếp của xâu S là xâu đặc biệt.
Dữ liệu vào từ tệp văn bản XDB.INP:
- Dòng đầu tiên gồm xâu S có độ dài không vượt quá 10⁶;
- Dòng thứ hai gồm số nguyên K (0 ≤ K ≤ 10⁹).
Kết quả ghi ra tệp văn bản XDB.OUT:
- Một số nguyên duy nhất là số lượng xâu con đặc biệt.
Ví dụ:
| XDB.INP | XDB.OUT | Giải thích |
|---|---|---|
erhdeu4 | 1 | Xâu con “de” có X = 100, Y = 101; 0 ≤ X − Y = 1 ≤ K. Thỏa mãn là xâu đặc biệt. |
Ràng buộc:
- Có 40% số test ứng với 40% số điểm có độ dài của xâu S không vượt quá 100;
- 30% số test khác ứng với 30% số điểm có độ dài của xâu S không vượt quá 5000;
- 30% số test còn lại ứng với 30% số điểm không có ràng buộc thêm.
Bài 5. Tìm kho báu (3,0 điểm)
Phần tiêu đề “Bài 5. Tìm kho báu (3,0 điểm)”Trong một trò chơi tìm kho báu, bản đồ được mã hóa thành một bảng hình chữ nhật có M hàng và N cột. Các hàng được đánh số từ 1 đến M, các cột được đánh số từ 1 đến N, ô ở hàng i, cột j trên bảng gọi là ô (i, j) có giá trị là một trong bốn loại ký tự:
- ‘0’: mô tả ô đất liền;
- ‘1’: mô tả ô biển;
- ’@’: mô tả ô vị trí xuất phát của nhân vật (luôn ở trên đất liền);
- ’#’: mô tả ô chứa kho báu (luôn ở trên đất liền).
Nhân vật không biết bơi nên sẽ không thể đi vào ô biển và luôn luôn đứng ở ô đất liền. Nhân vật có thể di chuyển trên bản đồ theo các cách sau:
- Đi bộ tự do sang các ô đất liền chung cạnh;
- Nhảy qua biển theo một trong 4 hướng Đông, Tây, Nam, Bắc đến ô đất liền đầu tiên trên hướng nhảy đó.
Yêu cầu: Nhân vật xuất phát ở ô có ký tự ’@’ và muốn di chuyển đến ô có ký tự ’#’ chứa kho báu. Vì mỗi lần nhảy qua biển tiêu hao nhiều năng lượng, hãy giúp nhân vật tìm số lần nhảy nhỏ nhất để có thể di chuyển đến ô có kho báu.
Dữ liệu vào từ tệp văn bản TKB.INP:
- Dòng đầu tiên gồm hai số nguyên M, N (1 ≤ M, N ≤ 10³);
- M dòng tiếp theo, mỗi dòng gồm N ký tự mô tả bản đồ.
Kết quả ghi ra tệp văn bản TKB.OUT:
- Một số nguyên duy nhất là kết quả của bài toán.
Ví dụ:
| TKB.INP | TKB.OUT | Giải thích |
|---|---|---|
4 8@0011011111110111001101#11111011 | 2 | Một cách di chuyển có số lần nhảy nhỏ nhất là 2 như sau: - Xuất phát từ ô (1,1), đi bộ sang ô (1,2), rồi đi bộ sang ô (1,3). - Nhảy từ ô (1,3) sang ô (1,6). Đi bộ từ ô (1,6) sang ô (2,6), rồi đi bộ sang ô (3,6). - Nhảy từ ô (3,6) sang ô (3,8) chứa kho báu. |
1 9@1011101# | 3 | Cách di chuyển có số lần nhảy nhỏ nhất là 3 như sau: Xuất phát từ ô (1,1), nhảy sang ô (1,3), rồi nhảy sang ô (1,7), rồi nhảy sang ô (1,9) chứa kho báu. |
Ràng buộc:
- Có 20% số test ứng với 20% số điểm có tối đa một cột chứa toàn ô số ‘1’ và một hàng chứa toàn ô số ‘1’;
- 30% số test khác ứng với 30% số điểm có M ≤ 2;
- 50% số test còn lại ứng với 50% số điểm không có ràng buộc thêm.
Giám thị không giải thích gì thêm.