Bỏ qua để đến nội dung

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


STTTên bàiTên tệp chương trìnhTên tệp dữ liệu vàoTên tệp kết quả raĐiểm
Bài 1Số báo danhSBD.*SBD.INPSBD.OUT5,0
Bài 2Chất hữu cơCHC.*CHC.INPCHC.OUT5,0
Bài 3Đếm đoạn conDDC.*DDC.INPDDC.OUT4,0
Bài 4Xâu đặc biệtXDB.*XDB.INPXDB.OUT3,0
Bài 5Tìm kho báuTKB.*TKB.INPTKB.OUT3,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.

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.INPSBD.OUT
AC.123-453
AB-1237
AB-123.450
AB-123.45.67810

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.INPCHC.OUTGiải thích
CH3OH32Phân tử khối của chất hữu cơ là: 12 + 1 × 3 + 16 + 1 = 32.
C6H12O6180Phân tử khối của chất hữu cơ là: 12 × 6 + 1 × 12 + 16 × 6 = 180.
C2H5OH46Phâ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.

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.INPDDC.OUTGiải thích
11
0 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.

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.INPXDB.OUTGiải thích
erhdeu
4
1Xâ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.

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.INPTKB.OUTGiải thích
4 8
@0011011
11111011
1001101#
11111011
2Mộ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#
3Cá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.