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

HSG lớp 9 Quảng Nam 2020-2021

SỞ GIÁO DỤC VÀ ĐÀO TẠO QUẢNG NAM ĐỀ CHÍNH THỨC
(Đề thi gồm 04 trang)

KỲ THI HỌC SINH GIỎI LỚP 9 CẤP TỈNH Năm học 2020 - 2021
Môn thi: Tin học - Ngày thi: 10/4/2021
Thời gian: 150 phút (không kể thời gian giao đề)


Tên bài Tên file chương trình Dữ liệu vào Dữ liệu ra Thời gian
Bài 1: Chia quà CHIAQUA.* CHIAQUA.INP CHIAQUA.OUT 1s
Bài 2: Mã số nhân viên CODE.* CODE.INP CODE.OUT 1s
Bài 3: Xâu đối xứng XAUDX.* XAUDX.INP XAUDX.OUT 1s
Bài 4: Ốc sên ăn rau OCSEN.* OCSEN.INP OCSEN.OUT 1s

Dấu * được thay thế bởi PAS hoặc CPP của ngôn ngữ lập trình được sử dụng tương ứng là Free Pascal hoặc C++.

Nhân dịp đi siêu thị cùng mẹ, Hằng đã mua M quả táo về làm quà cho hai người bạn thân là Nga và Trang. Mỗi quả táo có trọng lượng là 100g hoặc 200g. Hằng muốn chia đều M quả táo trên thành hai phần có trọng lượng bằng nhau để chia cho hai bạn vì khi mua Hằng quên kiểm tra điều này.

Yêu cầu: Theo em, Hằng có thể chia M quả táo trên thành hai phần có trọng lượng bằng nhau được không?

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

  • Dòng thứ nhất là số nguyên M (1 ≤ M ≤ 10⁶);
  • Dòng thứ hai gồm M số nguyên a₁, a₂, …, a_M là trọng lượng của các quả táo mà Hằng đã mua và mỗi số nguyên aᵢ cách nhau một khoảng trắng (dữ liệu vào đảm bảo chỉ có hai trường hợp aᵢ = 100 hoặc aᵢ = 200).

Dữ liệu ra: Ghi ra tệp văn bản CHIAQUA.OUT: Nếu Hằng có thể chia được thì thông báo là YES, còn nếu không chia được thì thông báo là NO.

Ví dụ:

CHIAQUA.INP CHIAQUA.OUT
3
100 200 100
YES
4
100 100 100 200
NO

Tổng Giám đốc công ty Hoa Hồng nổi tiếng là người rất cẩn trọng. Ông ta thực hiện việc quản lí nhân viên bằng cách gán cho mỗi nhân viên một mã số. Công ty có N nhân viên thì mỗi nhân viên i (i = 1, 2, …, N) đều có một mã số hoàn toàn khác nhau. Do bận đi công tác một thời gian dài nên ông ta giao lại quyền quản lí cho trợ lý của ông. Khi ông trở về, công ty đã có sự thay đổi số lượng nhân viên. Vì vậy, khi tiếp nhận thêm nhân viên mới, ông ta muốn biết mã số lớn nhất để gán cho nhân viên mới.

Yêu cầu: Hãy tìm mã số lớn nhất chưa xuất hiện trong N mã số đã cho.

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

  • Dòng thứ nhất ghi số nguyên dương N là số lượng nhân viên (1 < N ≤ 10⁶);
  • N dòng tiếp theo, dòng thứ i ghi số aᵢ (i = 1, 2, …, N; |aᵢ| ≤ 10⁹).

Dữ liệu ra: Ghi ra tệp văn bản CODE.OUT gồm một số duy nhất là mã số tìm được.

Ví dụ:

CODE.INP CODE.OUT
6
7
4
2
6
1
3
5

Ràng buộc:

  • Sub1: Có 50% test tương ứng 50% số điểm của bài với N ≤ 100 và |aᵢ| ≤ 10³;
  • Sub2: Có 30% test tương ứng 30% số điểm của bài với N ≤ 1000 và |aᵢ| ≤ 10⁶;
  • Sub3: Có 20% test tương ứng 20% số điểm còn lại của bài với N ≤ 10⁶ và |aᵢ| ≤ 10⁹.

Cho một xâu ST (độ dài không quá 2×10³ kí tự) chứa ít nhất một chữ cái in hoa (‘A’ … ‘Z’) hoặc một chữ cái thường (‘a’ … ‘z’) hoặc chữ số (‘0’ … ‘9’).

Yêu cầu: Hãy tìm độ dài của xâu con đối xứng dài nhất.

Một xâu được gọi là đối xứng nếu nó không có ít hơn một kí tự và nếu đọc từ trái sang phải hay từ phải sang trái đều giống nhau.

Ví dụ: ‘B’; ‘TOT’; ‘BAILIAB’ là các xâu đối xứng. ‘HOCBAI’ là xâu không đối xứng.

Dữ liệu vào: Từ tệp văn bản XAUDX.INP gồm một xâu ST.

Dữ liệu ra: Ghi ra tệp văn bản XAUDX.OUT gồm một số duy nhất là độ dài của xâu con đối xứng dài nhất.

Ví dụ:

XAUDX.INP XAUDX.OUT
ABFGHIKLMLKIHGH 11

Ràng buộc: Với N là độ dài của xâu ST

  • Sub1: Có 60% test tương ứng 60% số điểm của bài với N < 255;
  • Sub2: Có 40% test khác tương ứng 40% số điểm còn lại của bài với N ≤ 2×10³.

Một khu vườn hình chữ nhật có kích thước N×M (N dòng, M cột). Ta đánh số các dòng từ 1 đến N theo chiều từ trên xuống dưới và các cột từ 1 đến M theo chiều từ trái sang phải để chia khu vườn thành các ô. Trong các ô đó, ngoài những ô là đất để người nông dân trồng rau vẫn có những ô là đá không thể trồng rau được. Một chú ốc sên xuất phát tại ô (x, y) (x là vị trí dòng, y là vị trí cột). Nếu ô xuất phát là đất, chú ốc sên có thể di chuyển sang 4 ô kề cạnh với ô đó (bên trái, bên phải, bên trên, bên dưới) và đương nhiên không thể di chuyển vào ô đá được. Trường hợp ô xuất phát là đá thì chú ốc sên không thể di chuyển đến ô nào khác.

Yêu cầu: Hãy tính xem chú ốc sên có thể di chuyển đến nhiều nhất là bao nhiêu ô để ăn rau?

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

  • Dòng thứ nhất gồm 4 số nguyên N, M, X, Y (mỗi số cách nhau một khoảng trắng) (1 ≤ X ≤ N ≤ 2000, 1 ≤ Y ≤ M ≤ 2000);
  • Trong N dòng tiếp theo, mỗi dòng gồm M số nguyên 0 hoặc 1 (mỗi số cách nhau một khoảng trắng). Số 0 nghĩa là ô trồng rau, số 1 nghĩa là ô đá.

Dữ liệu ra: Ghi ra tệp văn bản OCSEN.OUT gồm một số nguyên là số lượng ô lớn nhất mà chú ốc sên có thể di chuyển đến để ăn rau. Nếu chú ốc sên không ăn được ô rau nào thì ghi kết quả là −1.

Ví dụ:

OCSEN.INP OCSEN.OUT
4 5 2 4
0 0 1 0 0
0 1 0 0 1
1 0 0 0 0
0 1 0 0 1
10

Ràng buộc:

  • Sub1: Có 50% test tương ứng 50% số điểm của bài với N, M < 10;
  • Sub2: Có 30% test tương ứng 30% số điểm của bài với N, M ≤ 100;
  • Sub3: Có 20% test khác tương ứng 20% số điểm còn lại của bài với N, M ≤ 2×10³.