Bảng B 2025 - Thành phố Hải Phòng
HỘI THI TIN HỌC TRẺ TP. HẢI PHÒNG - NĂM 2025 Đề chính thức
ĐỀ THI BẢNG B – TRUNG HỌC CƠ SỞ
Thời gian làm bài 120 phút, không kể thời gian phát đề
(Đề thi gồm 03 trang)
Tổng quan bài thi
Phần tiêu đề “Tổng quan bài thi”| TT | Tên bài | Tên tệp kết quả | Điểm |
|---|---|---|---|
| 1 | Số đặc biệt | Sodacbiet.* | 25 |
| 2 | Ma trận xoắn ốc | Matran.* | 25 |
| 3 | Hình chữ nhật | Hinhchunhat.* | 25 |
| 4 | Robot chuyển hàng hoá | Robot.* | 25 |
(* phần mở rộng của tệp tin theo quy định của ngôn ngữ lập trình)
Câu 1 (25 điểm). Số đặc biệt
Phần tiêu đề “Câu 1 (25 điểm). Số đặc biệt”Trong khi học về số học Nam tình cờ phát hiện ra các con số có tính chất đặc biệt. Số đặc biệt là số có đúng 3 ước nguyên dương.
Hãy sử dụng ngôn ngữ lập trình viết chương trình đặt tên là Sodacbiet.* (* là phần mở rộng của ngôn ngữ lập trình) giúp Nam tìm ra các số đặc biệt theo yêu cầu sau.
Yêu cầu: Cho N số nguyên dương lần lượt là a₁, a₂, a₃, …, a_N (1 ≤ aᵢ ≤ 10⁹). Với mỗi số aᵢ, cần xác định số đặc biệt bᵢ nhỏ nhất không nhỏ hơn aᵢ.
Dữ liệu vào: Từ tệp văn bản SDB.INP gồm 2 dòng.
- Dòng thứ nhất chứa một số N (1 ≤ N ≤ 10⁶).
- Dòng thứ hai gồm N số nguyên a₁, a₂, a₃, … a_N (1 ≤ aᵢ ≤ 10⁹).
Kết quả: Đưa ra tệp văn bản SDB.OUT gồm N số nguyên b₁, b₂, b₃, …, b_N thỏa mãn yêu cầu đề bài.
Ví dụ:
| SDB.INP | SDB.OUT |
|---|---|
36 3 20 | 9 4 25 |
51 10 5 100 7 | 4 25 9 121 9 |
Câu 2 (25 điểm). Ma trận xoắn ốc
Phần tiêu đề “Câu 2 (25 điểm). Ma trận xoắn ốc”Cho một ma trận hình vuông kích thước N x N (10 ≤ N ≤ 800) được chia thành các ô nhỏ, với mỗi ô (i, j) (1 ≤ i, j ≤ N) có giá trị từ 1 đến N x N được sắp xếp tăng dần theo hình xoắn ốc.
Yêu cầu: Hãy sử dụng ngôn ngữ lập trình viết chương trình đặt tên Matran.* (* là phần mở rộng của ngôn ngữ lập trình) in ra ma trận N×N các số từ 1 đến N×N xếp theo hình xoắn ốc theo chiều kim đồng hồ.
Đầu vào: Dữ liệu vào từ tệp văn bản MT.INP gồm nguyên dương N
Đầu ra: Ma trận N×N theo thứ tự xoắn ốc.
Ví dụ:
| MT.INP | MT.OUT |
|---|---|
3 | 1 2 38 9 47 6 5 |
4 | 1 2 3 412 13 14 511 16 15 610 9 8 7 |
Câu 3 (25 điểm). Hình chữ nhật
Phần tiêu đề “Câu 3 (25 điểm). Hình chữ nhật”Một người muốn xây nhà trên một mảnh đất được ghép bởi 2 hình chữ nhật, anh ta muốn sử dụng phần diện tích chung để làm không gian sinh hoạt chung.
Yêu cầu: Hãy sử dụng ngôn ngữ lập trình viết chương trình đặt tên là Hinhchunhat.* (* là phần mở rộng của ngôn ngữ lập trình) để giải quyết bài toán này. Cụ thể bài toán như sau: Cho 2 hình chữ nhật trên mặt phẳng 2D với tọa độ đỉnh trái dưới và đỉnh phải trên, tìm diện tích phần chung của 2 hình chữ nhật này?
Dữ liệu vào: đọc từ file HCN.INP gồm:
- Dòng 1 ghi 4 số nguyên x₁, y₁, x₂, y₂ tương ứng là tọa độ đỉnh trái dưới và đỉnh phải trên của hình chữ nhật thứ nhất;
- Dòng 2 ghi 4 số nguyên u₁, v₁, u₂, v₂ tương ứng là tọa độ đỉnh trái dưới và đỉnh phải trên của hình chữ nhật thứ hai;
Trong đó: x₁ < x₂, y₁ < y₂, u₁ < u₂, v₁ < v₂ và (−10⁹ < x₁, y₁, x₂, y₂, u₁, v₁, u₂, v₂ < 10⁹).
Dữ liệu ra: ghi ra file HCN.OUT số nguyên duy nhất là diện tích phần chung của 2 hình chữ nhật.
Ví dụ:
| HCN.INP | HCN.OUT |
|---|---|
1 1 3 32 0 4 4 | 2 |
Câu 4 (25 điểm). Robot chuyển hàng hoá
Phần tiêu đề “Câu 4 (25 điểm). Robot chuyển hàng hoá”Một kho hàng 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 kho hàng thành các ô. Trong các ô đó, ngoài những ô trống để di chuyển có những ô là giá hàng không thể di chuyển. Một chú robot 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à trống, robot 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 ô đặt giá hàng. Trường hợp ô xuất phát là giá hàng thì robot không thể di chuyển đến ô nào khác.
Yêu cầu: Hãy sử dụng ngôn ngữ lập trình viết chương trình đặt tên là Hinhchunhat.* (* là phần mở rộng của ngôn ngữ lập trình) tính xem robot có thể di chuyển đến nhiều nhất là bao nhiêu ô để chuyển hàng?
Dữ liệu vào: Từ tệp văn bản ROBOT.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, số 1 nghĩa là ô đặt giá hàng.
Dữ liệu ra: Ghi ra tệp văn bản ROBOT.OUT gồm một số nguyên là số lượng ô lớn nhất mà robot có thể di chuyển đến để chuyển hàng. Nếu robot không di chuyển được thì ghi kết quả là −1.
Ví dụ:
| ROBOT.INP | ROBOT.OUT |
|---|---|
4 5 2 40 0 1 0 00 1 0 0 11 0 0 0 00 1 0 0 1 | 10 |