HSG lớp 9 Ninh Bình 2025-2026
SỞ GIÁO DỤC VÀ ĐÀO TẠO
TỈNH NINH BÌNH
ĐỀ CHÍNH THỨC
(Đề thi gồm 03 trang)
KỲ THI CHỌN HỌC SINH GIỎI THCS CẤP TỈNH
Năm học 2025 - 2026
Môn: Tin học - Lớp 9 - Ngày thi: 10/3/2026
Thời gian làm bài: 150 phút, không kể thời gian phát đề
Tổng quan đề thi
Phần tiêu đề “Tổng quan đề thi”| TT | Tên bài | Tên chương trình | Dữ liệu vào | Dữ liệu ra | Điểm |
|---|---|---|---|---|---|
| 1 | HÌNH CHỮ NHẬT | HCNMAX.* | HCNMAX.INP | HCNMAX.OUT | 4,0 |
| 2 | SỐ ĐẶC BIỆT | SODB.* | SODB.INP | SODB.OUT | 4,0 |
| 3 | ĐẾM SỐ NGUYÊN TỐ | DEMNT.* | DEMNT.INP | DEMNT.OUT | 4,0 |
| 4 | CHIA DÃY | CHIADAY.* | CHIADAY.INP | CHIADAY.OUT | 4,0 |
| 5 | SỐ GẦN CHÍNH PHƯƠNG | GCP.* | GCP.INP | GCP.OUT | 4,0 |
(Trong đó * là PAS nếu sử dụng Pascal hoặc CPP nếu sử dụng C++ hoặc PY nếu sử dụng Python)
Hãy lập trình giải các bài toán sau:
Câu 1. HÌNH CHỮ NHẬT (4,0 điểm)
Phần tiêu đề “Câu 1. HÌNH CHỮ NHẬT (4,0 điểm)”Cho bốn số nguyên dương a, b, c, d. Biết rằng a, b là độ dài 2 cạnh của hình chữ nhật thứ nhất; c, d là độ dài 2 cạnh của hình chữ nhật thứ hai.
Yêu cầu: Hãy tính diện tích của hai hình chữ nhật và đưa ra diện tích lớn nhất.
Dữ liệu vào: trong tệp HCNMAX.INP theo thứ tự gồm bốn số nguyên dương a, b, c, d
(a, b, c, d ≤ 10⁹).
Kết quả: đưa ra tệp HCNMAX.OUT là diện tích lớn nhất tìm được.
Ví dụ:
| HCNMAX.INP | HCNMAX.OUT |
|---|---|
2 4 3 6 | 18 |
Câu 2. SỐ ĐẶC BIỆT (4,0 điểm)
Phần tiêu đề “Câu 2. SỐ ĐẶC BIỆT (4,0 điểm)”Số đặc biệt là số chia hết cho tích các chữ số của nó. Ví dụ, số 5 là số đặc biệt vì 5 chia hết cho 5; số 12 là số đặc biệt vì 12 chia hết cho 2 (1 × 2 = 2); số 102 không phải là số đặc biệt vì tích các chữ số của nó bằng 0 (1 × 0 × 2 = 0).
Yêu cầu: Cho dãy số A gồm n số nguyên dương a₁, a₂, …, aₙ và 2 số nguyên dương l, r. Hãy liệt kê các số đặc biệt theo đúng thứ tự xuất hiện trong đoạn a_l, a_(l+1), …, a_r.
Dữ liệu vào: trong tệp SODB.INP
- Dòng đầu theo thứ tự gồm ba số nguyên dương n, l, r (1 ≤ n ≤ 10⁵; 1 ≤ l ≤ r ≤ n);
- Dòng thứ hai gồm n số nguyên dương a₁, a₂, …, aₙ (aᵢ ≤ 10⁹; 1 ≤ i ≤ n).
Kết quả: trong tệp SODB.OUT gồm duy nhất một dòng ghi các số đặc biệt tìm được, các số
cách nhau một dấu cách. Nếu không tìm được số đặc biệt nào thì in ra -1.
Ví dụ:
| SODB.INP | SODB.OUT |
|---|---|
8 2 52 12 15 20 5 28 36 39 | 12 15 5 |
Câu 3. ĐẾM SỐ NGUYÊN TỐ (4,0 điểm)
Phần tiêu đề “Câu 3. ĐẾM SỐ NGUYÊN TỐ (4,0 điểm)”Trong một cuộc thi lập trình Robot, đội của An nhận được xâu tín hiệu S có độ dài không quá 3 × 10⁶ kí tự, chỉ gồm các chữ cái thường và chữ số gửi về thông qua đường truyền internet. An cần tách các số từ đoạn tín hiệu này và đếm số lượng số nguyên tố trong các số đã được tách. Biết rằng, mỗi số trong xâu S là một dãy các kí tự chữ số liên tiếp mà có các kí tự liền kề trước hoặc sau (nếu có) là kí tự chữ cái. Các số trong xâu S không vượt quá 10⁶.
Yêu cầu: Hãy viết chương trình đếm số lượng số nguyên tố được tách ra từ xâu S.
Dữ liệu vào: trong tệp văn bản DEMNT.INP gồm một xâu S chỉ chứa các kí tự chữ cái
thường và chữ số.
Kết quả: trong tệp văn bản DEMNT.OUT ghi ra số lượng số nguyên tố trong các số được
tách ra.
Ví dụ:
| DEMNT.INP | DEMNT.OUT | Giải thích |
|---|---|---|
nb05hsg21bc3956tin19 | 2 | Các số được tách từ xâu S gồm 4 số {5; 21; 3956; 19} có 2 số nguyên tố là 5 và 19. |
nb1hsg09tin68thcs135 | 0 | Trong xâu S không có số nguyên tố nào. |
Ràng buộc:
- Subtask 1: 25% số test tất cả các số trong xâu S đều có một chữ số;
- Subtask 2: 50% số test có độ dài của xâu S không vượt quá 1000 kí tự;
- Subtask 3: 25% số test không có ràng buộc gì thêm.
Câu 4. CHIA DÃY (4,0 điểm)
Phần tiêu đề “Câu 4. CHIA DÃY (4,0 điểm)”Cho dãy số A gồm n số nguyên a₁, a₂, …, aₙ, có thể chia dãy số này thành các đoạn liên tiếp sao cho tổng các số trong mỗi đoạn là lũy thừa cơ số 2.
Ví dụ: dãy gồm 6 số A = {5, 3, 1, 1, 1, 3} có 2 cách chia thoả mãn:
- Cách 1: Chia 3 đoạn
{5,3}; {1,1}; {1,3}có tổng lần lượt là 8 = 2³; 2 = 2¹, 4 = 2². - Cách 2: Chia 4 đoạn
{5,3}; {1}; {1}; {1,3}có tổng lần lượt là 8 = 2³; 1 = 2⁰; 1 = 2⁰, 4 = 2².
Yêu cầu: Em hãy viết chương trình tìm cách chia dãy A trên thành các đoạn con liên tiếp sao cho số lượng đoạn con là ít nhất và tổng các số trong mỗi đoạn là lũy thừa cơ số 2?
Dữ liệu vào: trong tệp văn bản CHIADAY.INP gồm:
- Dòng 1 là số nguyên dương n (1 ≤ n ≤ 10⁵);
- Dòng 2 gồm n số nguyên a₁, a₂, …, aₙ (0 ≤ aᵢ ≤ 2 × 10⁴; 1 ≤ i ≤ n);
Kết quả: đưa ra tệp văn bản CHIADAY.OUT một số nguyên là số đoạn ít nhất chia được.
Nếu không chia được thì in ra -1.
Ví dụ:
| CHIADAY.INP | CHIADAY.OUT |
|---|---|
65 3 1 1 1 3 | 3 |
Ràng buộc:
- Subtask 1: 25% số test có tổng tất cả các số trong dãy A là một lũy thừa cơ số 2;
- Subtask 2: 25% số test có n ≤ 3;
- Subtask 3: 25% số test có n ≤ 5000;
- Subtask 4: 25% số test không có ràng buộc gì thêm.
Câu 5. SỐ GẦN CHÍNH PHƯƠNG (4,0 điểm)
Phần tiêu đề “Câu 5. SỐ GẦN CHÍNH PHƯƠNG (4,0 điểm)”Một số tự nhiên được gọi là “Số gần chính phương” nếu số đó thỏa mãn đồng thời ba điều kiện sau:
- Có từ 3 chữ số trở lên.
- Chữ số ở hàng cao nhất (hàng đầu tiên bên trái) là một số chính phương.
- Tổng của hai chữ số cuối cùng (hàng chục và hàng đơn vị) là một số chính phương.
Yêu cầu: Cho số nguyên dương M, hãy đếm xem có bao nhiêu số “Số gần chính phương” trong đoạn từ 1 đến M.
Dữ liệu vào: trong tệp GCP.INP gồm một số nguyên dương M.
Kết quả: đưa ra tệp GCP.OUT gồm một số nguyên duy nhất là số lượng số “Số gần chính
phương” tìm được.
Ví dụ:
| GCP.INP | GCP.OUT |
|---|---|
105 | 3 |
Giải thích: Có 3 số từ 1 đến 105 là số gần chính phương gồm: 100; 101; 104.
Ràng buộc:
- Subtask 1: 50% số test có 100 ≤ M ≤ 999;
- Subtask 2: 25% số test M có 1000 ≤ M ≤ 10⁶;
- Subtask 3: 25% số test M có dạng 10ᴷ với 6 < K < 18.
Hết