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

Đề số 30 - Ôn thi HSG Tin học THCS

BỘ ĐỀ ÔN THI HỌC SINH GIỎI TIN HỌC THCS Bumbii Academy

ĐỀ SỐ 30 Thời gian làm bài: 150 phút
4 bài, tổng 20 điểm


BàiTên bàiFile chương trìnhFile dữ liệu vàoFile kết quảĐiểm
1Đánh số trangDANHSO.*DANHSO.INPDANHSO.OUT4
2Mật mã VigenèreMAHOA.*MAHOA.INPMAHOA.OUT5
3Chuỗi ngày đạt chỉ tiêuDOANTB.*DOANTB.INPDOANTB.OUT5
4Phá tườngPHATUONG.*PHATUONG.INPPHATUONG.OUT6

Dấu * được thay bằng py hoặc cpp tùy theo ngôn ngữ lập trình sử dụng.

Một cuốn sách có n trang, được đánh số 1, 2, 3, …, n.

Yêu cầu: Tính tổng số chữ số cần dùng để in số trang của cả cuốn sách.

Dữ liệu vào: Từ file văn bản DANHSO.INP gồm một số nguyên dương n.

Kết quả: Ghi ra file văn bản DANHSO.OUT một số nguyên là tổng số chữ số.

Ví dụ:

DANHSO.INPDANHSO.OUTGiải thích
1252679 trang có 1 chữ số, 90 trang có 2 chữ số, 26 trang có 3 chữ số: 9 + 180 + 78 = 267.

Ràng buộc:

  • Có 50% số test với n ≤ 106.
  • Có 50% số test với n ≤ 1017.

Mật mã Vigenère dùng một từ khóa gồm các chữ cái in thường. Chữ cái a ứng với độ dịch 0, b ứng với 1, …, z ứng với 25. Để mã hóa một văn bản, lần lượt ghép mỗi chữ cái của văn bản với chữ cái tiếp theo của từ khóa (hết từ khóa thì quay lại từ đầu), rồi dịch chữ cái đó đi về phía sau trong bảng chữ cái theo độ dịch tương ứng (sau z quay lại a). Chữ in hoa vẫn là chữ in hoa, chữ in thường vẫn là chữ in thường. Các kí tự không phải chữ cái giữ nguyên và không dùng đến từ khóa. Giải mã là dịch ngược lại.

Yêu cầu: Cho từ khóa, một văn bản cần mã hóa và một văn bản cần giải mã, hãy thực hiện hai việc đó.

Dữ liệu vào: Từ file văn bản MAHOA.INP gồm ba dòng: từ khóa (không quá 100 chữ cái in thường); văn bản cần mã hóa; văn bản cần giải mã. Mỗi văn bản dài không quá 105 kí tự, gồm chữ cái, chữ số, dấu câu và dấu cách.

Kết quả: Ghi ra file văn bản MAHOA.OUT gồm hai dòng: văn bản sau khi mã hóa và văn bản sau khi giải mã.

Ví dụ:

MAHOA.INPMAHOA.OUTGiải thích
bai
Hoc Tin, vui lam!
Dhcd tpj twu!
Iok Uiv, wuq mau!
Chuc thi tot!
H dịch 1 thành I, o dịch 0 giữ nguyên o, c dịch 8 thành k, T dịch 1 thành U, …

Ràng buộc:

  • Có 40% số test với từ khóa chỉ có 1 chữ cái.
  • Có 60% số test với từ khóa có tới 100 chữ cái.

Bài 3. Chuỗi ngày đạt chỉ tiêu (5 điểm)

Phần tiêu đề “Bài 3. Chuỗi ngày đạt chỉ tiêu (5 điểm)”

Một cửa hàng ghi lại doanh thu n ngày liên tiếp a1, a2, …, an (có thể âm nếu ngày đó bị lỗ). Chỉ tiêu là doanh thu trung bình mỗi ngày ít nhất bằng K.

Yêu cầu: Tìm độ dài lớn nhất của một chuỗi ngày liên tiếp có doanh thu trung bình không nhỏ hơn K.

Dữ liệu vào: Từ file văn bản DOANTB.INP gồm:

  • Dòng đầu tiên chứa hai số nguyên n và K (n ≥ 1, |K| ≤ 109).
  • Dòng thứ hai chứa n số nguyên a1, a2, …, an (|ai| ≤ 109).

Kết quả: Ghi ra file văn bản DOANTB.OUT một số nguyên là độ dài lớn nhất (ghi 0 nếu không có ngày nào đạt chỉ tiêu).

Ví dụ:

DOANTB.INPDOANTB.OUTGiải thích
7 5
3 8 2 9 1 1 6
4Bốn ngày đầu có trung bình 22 / 4 = 5,5.

Ràng buộc:

  • Có 40% số test với n ≤ 2000.
  • Có 60% số test với n ≤ 2 × 105.

Một mê cung là lưới m × n ô: ô . là đường đi, ô # là tường, ô S là vị trí xuất phát, ô T là lối ra. Mỗi bước có thể đi sang một ô chung cạnh. Bạn có một chiếc búa dùng được đúng một lần để phá một bức tường: bước vào ô tường đó cũng tính là một bước.

Yêu cầu: Tìm số bước ít nhất để đi từ S đến T (có thể không cần dùng búa).

Dữ liệu vào: Từ file văn bản PHATUONG.INP gồm:

  • Dòng đầu tiên chứa hai số nguyên dương m, n.
  • m dòng tiếp theo, mỗi dòng là một xâu n kí tự thuộc .#ST. Lưới có đúng một ô S và một ô T.

Kết quả: Ghi ra file văn bản PHATUONG.OUT một số nguyên là số bước ít nhất, hoặc -1 nếu không thể đến T.

Ví dụ:

PHATUONG.INPPHATUONG.OUTGiải thích
3 5
S.#..
..#..
..#.T
6Phá bức tường ở hàng 1, cột 3 rồi đi tiếp sang phải và xuống.

Ràng buộc:

  • Có 30% số test với m, n ≤ 30.
  • Có 70% số test với m, n ≤ 300.