Bộ 16 Đề thi HSG Tin học Lớp 9 TP.Hà Nội (Có đáp án)

Câu 4. Hình chữ nhật (3 điểm)

Cho một hình chữ nhật gồm N dòng và M cột. Các dòng được đánh số từ 1 đến N, từ trên xuống dưới. Các cột được đánh số từ 1 đến M, từ trái sang phải. Ô ở dòng thứ i và cột thứ j được gọi là ô (i, j) và có diện tích là 1 đơn vị. Có một số ô đã được điền sẵn kí tự 'X'.

Yêu cầu: tìm hình chữ nhật con có diện tích lớn nhất chỉ chứa duy nhất một kí tự 'X'.

Dữ liệu vào từ file văn bản HCN.INP:

- Dòng đầu tiên gồm ba số nguyên dương N, M, K (N, M ≤ 104; K ≤ 103) mô tả kích thước của hình chữ nhật và số lượng kí tự 'X' có trong hình chữ nhật;

- K dòng sau, mỗi dòng gồm hai số nguyên dương d và c là chỉ số dòng và cột của ô điền kí tự 'X' (d N; c M).

Kết quả ghi ra file văn bản HCN.OUT:

Ghi ra diện tích của hình chữ nhật lớn nhất thoả mãn yêu cầu đề bài.

Ràng buộc:

- Có 50% số test tương ứng với 50% số điểm thoả mãn: N,M 50;

- 30% số test khác tương ứng với 30% số điểm thoả mãn: N,M 500;

- 20% so test còn lại tương ứng với 20% số điểm không có ràng buộc gì thêm.

Câu 5. Cổ phiếu VNI (3 điểm)

Bình mua bán cổ phiếu VNI trên thị trường chứng khoán. Giả sử giá của một cổ phiếu VNI trong vòng N ngày lần lượt là A1, A2, ...,AN. Biết rằng mỗi ngày Bình chỉ thực hiện một trong những hoạt động sau:

1. Mua một cổ phiếu VNI;

2. Bán số lượng cổ phiếu VNI bất kì mà Bình đang sở hữu;

3. Không thực hiện bất kì giao dịch nào.

Yêu cầu: Bình thực hiện mua bán cổ phiếu VNI như thế nào để thu được lợi nhuận lớn nhất nếu anh ấy tham gia mua bán bắt đầu từ ngày thứ T cho trước?

Dữ liệu vào từ file vãn bản VNL.INP:

- Dòng đầu tiên gồm số nguyên dương N (N ≤ 105) là số ngày biết giá cổ phiếu;

- Dòng thứ hai gồm N số nguyên dương A1, A2,…,AN tương ứng là giá của một cổ phiếu VNI trong từng ngày (Ai ≤ 109; 1 ≤ i ≤ N);

- Dòng thứ ba gồm một số nguyên dương Q là số lượng truy vấn (Q < 105);

- Q dòng sau, mỗi dòng gồm một số nguyên dương T (T N) thể hiện cho ngày đầu tiên mà Bình tham gia việc mua bán cổ phiếu VNI.

Kết quả ghi ra file văn bản VNI.OUT:

Q dòng, mỗi dòng gồm một số nguyên duy nhất là lợi nhuận lớn nhất mà Bình thu được ở mỗi truy vấn tương ứng.

Ràng buộc:

- Có 50% số test ứng với 50% số điểm của bài thoả mãn: N ≤ 1000; Q = 1;

- 30% số test khác ứng với 30% số điểm của bài thoả mãn: N ≤ 105; Q = 1;

- 20% số test còn lại ứng với 20% số điểm của bài không có ràng buộc gì thêm.

docx 185 trang tinhoc 19/07/2025 20
Bạn đang xem 30 trang mẫu của tài liệu "Bộ 16 Đề thi HSG Tin học Lớp 9 TP.Hà Nội (Có đáp án)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

Tóm tắt nội dung tài liệu: Bộ 16 Đề thi HSG Tin học Lớp 9 TP.Hà Nội (Có đáp án)

Bộ 16 Đề thi HSG Tin học Lớp 9 TP.Hà Nội (Có đáp án)
 Bộ 16 Đề thi HSG Tin học Lớp 9 TP.Hà Nội (Có đáp án) - DeThiTinHoc.net
 DeThiTinHoc.net Bộ 16 Đề thi HSG Tin học Lớp 9 TP.Hà Nội (Có đáp án) - DeThiTinHoc.net
 ĐỀ SỐ 1
SỞ GIÁO DỤC & ĐÀO TẠO HÀ NỘI KỲ THI CHỌN HỌC SINH GIỎI THÀNH 
 PHỐ LỚP 9 CẤP THCS
 ĐỀ CHÍNH THỨC NĂM HỌC 2024-2025
 (Đề thi gồm 04 trang) Môn thi: TIN HỌC
 Thời gian: 150 phút (không kể thời gian giao đề)
 TỔNG QUAN BÀI THI
 Tên file chương Tên file kết quả 
STT Tên bài Tên file dữ liệu vào Điểm
 trình ra
Bài I Cắt hình CATHINH.* CATHINH.INP CATHINH.OUT 5,0
 Mạch MACHDNA* ∗
Bài II MACHDNA.INP MACHDNA.OUT 5,0
 DNA
Bài 
 Dây đèn DAYDEN.* DAYDEN.INP DAYDEN.OUT 4,0
III
Bài 
 Trò chơi TROCHOI.* TROCHOI.INP TROCHOI.OUT 3,0
IV
 Mua 
Bài V MUAHANG.* MUAHANG.INP MUAHANG.OUT 3,0
 hàng
Chú ý: Dấu * đırơc thay thế bởi PAS, CPP, PY của ngôn ngữ lập trình được sử dụng tương 
ứng là Pascal, C/C++ hoặc Python.
Bài I. Cắt hình (5,0 điểm)
Cho một tờ giấy hình chữ nhật kích thước M(cm) x N(cm) và một số tự nhiên K.
Yêu cầu: Nếu cắt những hình vuông có kích thước K(cm) x K(cm) từ tờ giấy này thì diện 
tích còn lại nhỏ nhất là bao nhiêu cm2 ?
Dữ liệu vào từ file văn bản CATHINH.INP: Gồm ba số tự nhiên M, N, K lần lượt mỗi số 
trên một dòng (1 ≤ M, N, K ≤ 109).
Kết quả ghi ra file văn bản CATHINH.OUT: Một số nguyên duy nhất là kết quả của bài 
toán.
 DeThiTinHoc.net Bộ 16 Đề thi HSG Tin học Lớp 9 TP.Hà Nội (Có đáp án) - DeThiTinHoc.net
Ví dụ:
 CATHINH.INP CATHINH.OUT GIẢI THÍCH
8 20
7
3
Bài II. Mạch DNA (5,0 điểm)
Cho mạch mã gốc DNA bốn loại nucleotide A, T, G, C. Để tiết kiệm bộ nhớ, mạch mã gốc 
đã được nén lại thành một chuỗi S gồm các cặp là số lần xuất hiện liên tiếp nucleotide và loại 
nucleotide tương úng.
Ví dụ: Mạch mã gốc AAACAATGGGGA nén thành 3A1C2A1T4G1A.
Các nucleotide ở hai mạch của phân tử DNA liên kết với nhau theo nguyên tắc bổ sung, 
trong đó liên kết với T, G liên kết với C. Do vậy, nếu biết trình tự nucleotide trên một mạch 
có thể suy ra trình tự của mạch còn lại.
Ví dụ: Một đoạn phân tử DNA ở sinh vật nhân thực có trình tự nucleotide trên mạch mã gốc 
là. Trình tư nucleotide trên mạch bổ sung của đoạn DNA này là:
Yêu cầu: Cho một chuỗi ký tự mô tả mạch mã gốc DNA sau khi đã nén. Hãy lập trình xác 
định mạch bổ sung của mạch mã góc sau khi giải nén.
Dữ liệu vào từ file văn bản MACHDNA.INP: Một chuỗi S có độ dài không vượt quá 1000. 
Dữ liệu đảm bảo chuổi sau khi giải nén có độ dài không vượt quá 105.
 DeThiTinHoc.net Bộ 16 Đề thi HSG Tin học Lớp 9 TP.Hà Nội (Có đáp án) - DeThiTinHoc.net
Kết quả ghi ra file văn bản MACHDNA.OUT: Chuỗi ký tự là mạch bổ sung của mạch mã 
gốc sau khi giải nén.
Ví dụ:
 MACHDNA.INP MACHDNA.OUT GIẢI THÍCH
 5A2G1A11T1C TTTTTCCTAAAAAAAAAAAG Mạch mã gốc sau khi giải nén là: 
 AAAAAGGATTTTTTTTTTTC.
 Mạch bổ sung là: 
 TTTTTCCTAAAAAAAAAAAG.
Ràng buộc:
- Có 20% số test ứng với 20% số điểm của bài thỏa mãn: Độ dài chuỗi S là 2, trong đó ký tự 
đầu tiên là chữ số, ký tự thứ hai là một trong 4 chữ cái A, T, G, C;
- Có 20% số test khác ứng với 20% số điểm của bài thỏa mãn: Có duy nhất một loại 
nucleotide;
- Có 40% số test khác ứng với 40% số điểm của bài thỏa mãn: Số lần xuất hiện liên tiếp 
nucleotide A, T, G, C nhỏ hơn 10;
- 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 III. Dây đèn (4,0 điểm)
Để trang trí Tết, Nam treo một dây đèn gồm N bóng đèn, được đánh số từ 1 đến N, từ trái 
sang phải. Mỗi bóng đèn khi bật sẽ có hai màu vàng hoặc đỏ. Dây đèn được nhúng một mã 
lệnh cho phép nhận một số tự nhiên X. Khi đó, màu của bóng đèn thứ X và các bóng đèn 
cách bóng đèn thứ X không quá K bóng đèn sẽ đều đổi từ vàng thành đỏ hoặc ngược lại.
Ban đầu các bóng đèn đều có màu vàng. Để dây đèn trông đẹp mắt, Nam đã lập trình để điều 
khiển màu của các bóng đèn. Chương trình của Nam có M dòng lệnh, mỗi dòng lệnh tương 
ứng với một lần gọi mã lệnh của dây đèn. Vì số lượng bóng đèn quá lớn, sau khi lập trình 
xong, Nam muốn kiểm tra ngẫu nhiên màu một số bóng đèn xem có đúng như ý tưởng ban 
đầu không.
Yêu cầu: Cho các số tự nhiên X là tham số của M dòng lệnh trong chương trình của Nam. 
Hãy lập trình để trả lời Q câu hỏi tương ứng với các lần kiểm tra của Nam. Biết rằng mỗi câu 
hỏi chứa một số nguyên dương P để xác định xem bóng đèn thứ P trong dây đèn có màu 
vàng hay đỏ.
Dữ liệu vào từ file văn bản DAYDEN.INP:
- Dòng đầu tiên gồm bốn số nguyên dương lần lượt là: M, N, Q, K (1 ≤ N ≤ 109 ; 1 ≤ M ≤ 
105 ; 1 ≤ Q ≤ 105 ; 0 ≤ K ≤ N);
- Dòng thứ hai gồm M số nguyên dương Xi mô tả tham số của lệnh thứ i (1 ≤ Xi ≤ N);
 DeThiTinHoc.net Bộ 16 Đề thi HSG Tin học Lớp 9 TP.Hà Nội (Có đáp án) - DeThiTinHoc.net
- Dòng thứ ba gồm Q số nguyên dương Pi mô tả câu hỏi thứ i (1 ≤ Pi ≤ N).
Kết quả ghi ra file văn bản DAYDEN.OUT: Gồm Q dòng, dòng thứ là câu trả lời cho câu 
hỏi thứ i. Nếu bóng đèn tại vị trí Pi đang có màu vàng thì ghi ra ký tự " V ", ngược lại ghi ra 
ký tự " D ".
Ví dụ:
DAYDEN.INP DAYDEN.OUT GIẢI THÍCH
7 2 4 1 D - Sau lần gọi mã lệnh thứ nhất, các bóng trong dây đèn 
3 5 V có màu là: V, D, D, D, V, V, V;
2 7 4 5 V - Sau lần gọi mã lệnh thứ hai, các bóng trong dây đèn 
 D có màu là: V, D, D, V, D, D, V;
Ràng buộc:
- Có 60% số test ứng với 60% số điểm của bài thoả mãn: N, M, Q ≤ 103;
- 20% số test khác ứng với 20% số điểm của bài thoả mãn: N, M ≤ 105;
- 20% số test còn lại ứng với 20% số điểm của bài không có ràng buộc gì thêm.
Bài IV. Trò chơi (3,0 điểm)
Cho một bảng vuông kích thước N x N, N là số lẻ. Các hàng của bảng được đánh số từ 1 tới 
N, từ trên xuống dưới; các cột của bảng được đánh số từ 1 tới N, từ trái sang phải. Ban đầu, 
các số từ 1 đến N2 được ghi vào bảng này lần lượt từ trái sang phải, từ trên xuống dưới. Khi 
N = 5 thì bàng vuông sẽ có dạng như Hình 1.
 1 2 3 4 5
 1 1 2 3 4 5
 2 6 7 8 9 10
 3 11 12 13 14 15
 4 16 17 18 19 20
 5 21 22 23 24 25
 Hình 1
Luật chơi: Có Q lượt chơi, mỗi lượt chơi quản trò sẽ cấp cho người chơi thông tin là ba số 
nguyên P, X, Y (1 ≤ P ≤ N2 ; 1 ≤ X, Y ≤ N). Người chơi cần đưa số nguyên P đến vị trí hàng 
X cột Y với số lần dịch bảng nhỏ nhất bằng cách sau:
- Dịch các số trên hàng chứa số P sang phải hoặc sang trái một ô theo vòng tròn cho đến khi 
số P nằm trên cột Y;
- Dịch các số trên cột Y lên trên hoặc xuống dưới một ô theo vòng tròn cho đến khi số P nằm 
trên hàng X;
- Mỗi thao tác dịch hàng hoặc cột như trên được tính là một lần dịch bàng. Bảng đầu tiên của 
 DeThiTinHoc.net Bộ 16 Đề thi HSG Tin học Lớp 9 TP.Hà Nội (Có đáp án) - DeThiTinHoc.net
lượt chơi sau chính là bảng kết thúc của lượt chơi trước.
Ví dụ: Xét bảng vuông 5 x 5, cần dịch số 17 trên bảng ban đầu đến vị trí hàng 2 cột 5. Để số 
lần dịch bảng nhỏ nhất thực hiện như Hình 2.
 Bảng ban đầu – Lượt 1 Lần 1 – Dịch sang trái Lần 2 – Dịch sang trái
 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
 6 7 8 9 10 6 7 8 9 10 6 7 8 9 10
 11 12 13 14 15 11 12 13 14 15 11 12 13 14 15
 16 17 18 19 20 17 18 19 20 16 18 19 20 16 17
 21 22 23 24 25 21 22 23 24 25 21 22 23 24 25
 Lần 3 – Dịch lên trên Lần 4 – Dịch lên trên
 1 2 3 4 10 1 2 3 4 15
 6 7 8 9 15 6 7 8 9 17
 11 12 13 14 17 11 12 13 14 25
 18 19 20 16 25 18 19 20 16 5
 21 22 23 24 5 21 22 23 24 10
 Hình 2
Yêu cầu: Cho thông tin của Q lượt chơi. Hãy lập trình đưa ra số lần dịch bảng nhỏ nhất tìm 
được tương ứng với mỗi lượt.
Dữ liệu vào từ file văn bản TROCHOI.INP:
- Dòng đầu tiên chứa hai số nguyên dương N, Q (1 ≤ N < 30000 ; 1 ≤ Q ≤ 2000);
- Q dòng sau, mỗi dòng chứa ba số nguyên dương P, X, Y (1 ≤ P ≤ N2 ; 1 ≤ X, Y ≤ N) mô tả 
thông tin của một lượt chơi.
Kết quả ghi ra file văn bản TROCHOI.OUT: Gồm 푄 dòng, dòng thứ 푖 tương úng là số lần 
dịch bảng nhỏ nhất tìm được trong lượt chơi thứ 푖.
Ví dụ:
TROCHOI.INP TROCHOI.OUT GIẢI THÍCH
5 3 4 - Lượt chơi đầu tiên được mô tả bởi Hình 2;
17 2 5 2 - Lượt chơi thứ hai thực hiện 2 lần dịch bảng như sau: 
5 4 2 4
18 1 1
 - Lượt chơi thứ ba thực hiện 2 lần dịch hàng 4 sang 
 trái và 2 lần dịch cột 1 xuống dưới.
 DeThiTinHoc.net Bộ 16 Đề thi HSG Tin học Lớp 9 TP.Hà Nội (Có đáp án) - DeThiTinHoc.net
Ràng buộc:
- Có 40% số test ứng với 40% số điểm của bài thoả mãn: N < 100 ; Q ≤ 100;
- 40% số test khác úng với 40% số điểm của bài thoả mãn: N < 1500 ; Q ≤ 1500;
- 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 V. Mua hàng (3,0 điểm)
An đi mua M sản phẩm khác nhau, các sản phẩm được đánh số từ 1 đến M. Ở chợ có N quầy 
hàng xếp thành hàng ngang được đánh số từ 1 đến N, từ trái sang phải. Quầy hàng thứ i chỉ 
bán một loại sản phẩm duy nhất là Ai (1 ≤ Ai ≤ M) và với mỗi sản phẩm trong M sản phẩm 
luôn tồn tại it nhất một quầy hàng bán sản phẩm loại đó. Thời gian để An mua sản phẩm tại 
quầy hàng thứ I là Ti phút. Thời gian để di chuyển giữa hai quầy hàng liền kề là 1 phút.
Yêu cầu: Tìm cách mua hàng sao cho
- Mua đủ M sản phẩm theo đúng thứ tự 1, 2, 3,, M. Có thể bắt đầu từ một quầy hàng bất kì 
bán sản phẩm 1;
- Thời gian tính từ lúc bắt đầu mua sản phẩm 1 đến khi mua xong sản phẩm M là nhỏ nhất;
Dữ liệu vào từ file văn bản MUAHANG.INP:
- Dòng đầu tiên gồm hai số nguyên dương N, M (1 ≤ M ≤ N ≤ 105);
- Dòng thứ hai gồm N số nguyên dương A1, A2,, AN (1 ≤ Ai ≤ M ; 1 ≤ i ≤ N). Dữ liệu đảm 
bảo các số từ 1 đến M xuất hiện ít nhất một lần;
 9
- Dòng thứ ba gồm N số nguyên dương T1, T2,, TN (1 ≤ Ti ≤ 10 ; 1 ≤ i ≤ N). 
Kết quả ghi ra file văn bản MUAHANG.OUT: Một số nguyên duy nhất là số phút nhỏ 
nhất để An mua M sản phẩm theo yêu cầu đề bài.
Ví dụ:
MUAHANG.INP MUAHANG.OUT GIẢI THÍCH
5 2 11 Cách mua sao cho tổng số phút nhỏ nhất là:
1 2 1 1 2 - Mua sản phẩm 1 ở quầy hàng thứ 3 mất 6 phút;
5 10 6 8 3 - Di chuyển sang quầy hàng thứ 5 mất 2 phút;
 - Mua sản phẩm 2 ở quầy hàng thứ 5 mất 3 phút; 
 Tổng số phút là: 6 + 2 + 3 = 11
Ràng buộc:
- Có 10% số test ứng với 10% số điểm của bài thoả mãn: M = 1;
- 30% số test khác úng với 30% số điểm của bài thoả mãn: M = N;
- 30% số test khác úng với 30% số điểm của bài thoả mãn: N ≤ 2000;
- 30% số test còn lại úng với 30% số điểm không có ràng buộc gì thêm.
 ----------HẾT----------
 DeThiTinHoc.net Bộ 16 Đề thi HSG Tin học Lớp 9 TP.Hà Nội (Có đáp án) - DeThiTinHoc.net
 ĐÁP ÁN
Bài I. Cắt hình (5,0 điểm)
#include // Để nhập xuất dữ liệu
int main() {
 // Chuyển hướng nhập xuất từ console sang file theo yêu cầu của đề bài
 freopen("CATHINH.INP", "r", stdin); // Mở file input
 freopen("CATHINH.OUT", "w", stdout); // Mở file output
 // Tối ưu hóa hiệu suất nhập xuất trong C++
 std::ios_base::sync_with_stdio(false);
 std::cin.tie(NULL);
 std::cout.tie(NULL);
 long long M, N, K; // Khai báo các biến với kiểu long long để tránh tràn số
 std::cin >> M >> N >> K;
 // Tính số lượng hình vuông K x K có thể cắt được theo chiều M
 long long num_M = M / K;
 // Tính số lượng hình vuông K x K có thể cắt được theo chiều N
 long long num_N = N / K;
 // Tổng số hình vuông K x K có thể cắt được
 long long total_squares = num_M * num_N;
 // Diện tích mỗi hình vuông K x K
 long long square_area = K * K;
 // Tổng diện tích bị cắt
 long long cut_area = total_squares * square_area;
 // Diện tích ban đầu của tờ giấy
 long long initial_area = M * N;
 // Diện tích còn lại nhỏ nhất
 long long remaining_area = initial_area - cut_area;
 // In kết quả ra file output
 DeThiTinHoc.net Bộ 16 Đề thi HSG Tin học Lớp 9 TP.Hà Nội (Có đáp án) - DeThiTinHoc.net
 std::cout << remaining_area << std::endl;
 return 0;
}
Bài II. Mạch DNA (5,0 điểm)
#include // Để nhập xuất dữ liệu
#include // Để làm việc với chuỗi
#include // Có thể dùng nếu muốn lưu trữ tạm thời các cặp (count, char), nhưng 
không cần thiết
#include // Để sử dụng isdigit()
int main() {
 // Chuyển hướng nhập xuất từ console sang file theo yêu cầu của đề bài
 freopen("MACHDNA.INP", "r", stdin); // Mở file input
 freopen("MACHDNA.OUT", "w", stdout); // Mở file output
 // Tối ưu hóa hiệu suất nhập xuất trong C++
 std::ios_base::sync_with_stdio(false);
 std::cin.tie(NULL);
 std::cout.tie(NULL);
 std::string s_compressed; // Chuỗi DNA đã nén
 std::cin >> s_compressed;
 std::string s_decompressed = ""; // Chuỗi DNA gốc sau khi giải nén
 int i = 0; // Biến dùng để duyệt qua chuỗi nén
 while (i < s_compressed.length()) {
 int count = 0;
 // Đọc số lượng lặp lại (có thể là số có nhiều chữ số)
 while (i < s_compressed.length() && std::isdigit(s_compressed[i])) {
 count = count * 10 + (s_compressed[i] - '0');
 i++;
 }
 // Ký tự nucleotide cần lặp lại
 char char_to_repeat = s_compressed[i];
 DeThiTinHoc.net Bộ 16 Đề thi HSG Tin học Lớp 9 TP.Hà Nội (Có đáp án) - DeThiTinHoc.net
 i++; // Di chuyển con trỏ tới ký tự tiếp theo sau nucleotide
 // Thêm ký tự vào chuỗi giải nén 'count' lần
 for (int j = 0; j < count; ++j) {
 s_decompressed += char_to_repeat;
 }
 }
 // In chuỗi DNA gốc ra file output
 std::cout << s_decompressed << std::endl;
 return 0;
}
Bài III. Dây đèn (4,0 điểm)
#include // Để nhập xuất dữ liệu
#include // Để sử dụng std::vector
#include // Để sử dụng std::map cho sweep line
#include // Để sử dụng std::min, std::max, std::sort
int main() {
 // Chuyển hướng nhập xuất từ console sang file theo yêu cầu của đề bài
 freopen("DAYDEN.INP", "r", stdin); // Mở file input
 freopen("DAYDEN.OUT", "w", stdout); // Mở file output
 // Tối ưu hóa hiệu suất nhập xuất trong C++
 std::ios_base::sync_with_stdio(false);
 std::cin.tie(NULL);
 std::cout.tie(NULL);
 long long N, K;
 int M, Q;
 std::cin >> N >> M >> Q >> K; // Đọc N, M, Q, K
 // Map để lưu trữ các sự kiện thay đổi trạng thái (sweep line points)
 // Key: vị trí bóng đèn, Value: số lần lật thay đổi tại vị trí đó
 std::map changes;
 // Xử lý M lệnh điều khiển đèn
 DeThiTinHoc.net

File đính kèm:

  • docxbo_16_de_thi_hsg_tin_hoc_lop_9_tp_ha_noi_co_dap_an.docx