de-thi-hoc-sinh-gioi-mon-tin-hoc-8-nam-hoc-2026-2027

Tin họcLớp 8HChia sẻ bởi Hiếu Nguyễn Quang 0 lượt sử dụng đề

TRƯỜNG THCS …
Đề chính thức
(Đề thi có 03 trang)

KỲ THI CHỌN HỌC SINH GIỎI CẤP TRƯỜNG
NĂM HỌC 2026 – 2027
Môn: TIN HỌC – LỚP 8
Thời gian làm bài: 90 phút (không kể thời gian phát đề)

TỔNG QUAN ĐỀ THI

Bài

Tên bài

Tệp chương trình

Tệp dữ liệu vào

Tệp kết quả ra

Điểm

1

Khóa số an toàn

`SAFEKEY.*`

`SAFEKEY.INP`

`SAFEKEY.OUT`

4,0

2

Tín hiệu hoán vị

`PERMSTR.*`

`PERMSTR.INP`

`PERMSTR.OUT`

4,0

3

Đoạn thặng dư ngắn nhất

`DIFFSEG.*`

`DIFFSEG.INP`

`DIFFSEG.OUT`

4,0

4

Khai thác khoáng sản

`MINE.*`

`MINE.INP`

`MINE.OUT`

4,0

5

Dãy bậc thang dài nhất

`STAIRS.*`

`STAIRS.INP`

`STAIRS.OUT`

4,0

Dấu `` trong tên tệp chương trình được thay thế bằng đuôi `PAS`, `CPP` hoặc `PY` tương ứng với ngôn ngữ lập trình Pascal, C++ hoặc Python.*

Mỗi bài toán có giới hạn thời gian chạy không quá 1,0 giây/test và giới hạn bộ nhớ không quá 256 MB.

NỘI DUNG CÁC BÀI TOÁN

Bài 1 (4,0 điểm). Khóa số an toàn

Trong một hệ thống an ninh mạng, một mã khóa nguyên dương xx được gọi là khóa an toàn nếu thỏa mãn đồng thời hai điều kiện sau:

1. xx có ít nhất hai ước nguyên tố phân biệt;

2. Tổng của tất cả các ước nguyên tố phân biệt của xx là một ước số của xx.

Ví dụ:

- Xét x=12x=12: Các ước nguyên tố phân biệt của 12 là 22 và 33. Tổng các ước nguyên tố này là 2+3=52+3=5. Do 12 không chia hết cho 5 nên 12 không phải là khóa an toàn.

- Xét x=30x=30: Các ước nguyên tố phân biệt của 30 là 2,32,3 và 55. Tổng của chúng là 2+3+5=102+3+5=10. Vì 30 chia hết cho 10 nên 30 là một khóa an toàn.

Yêu cầu: Cho hai số nguyên dương LL và RR. Hãy đếm số lượng khóa an toàn nằm trong đoạn [L,R][L,R] (tức là L≤x≤RL\leq x\leq R).

Dữ liệu vào: Đọc từ tệp `SAFEKEY.INP` gồm một dòng duy nhất chứa hai số nguyên dương L,RL,R cách nhau một dấu cách (1≤L≤R≤5⋅1061\leq L\leq R\leq 5\cdot {10}^{6}).

Dữ liệu ra: Ghi ra tệp `SAFEKEY.OUT` một số nguyên duy nhất là số lượng khóa an toàn tìm được.

Ví dụ:

SAFEKEY.INP

SAFEKEY.OUT

Giải thích

`1 45`

`3`

Trong đoạn [1,45][1,45] có 3 khóa an toàn là: 18 (2+3=52+3=5 không chia hết), 20 (2+5=72+5=7 không chia hết), 30 (2+3+5=102+3+5=10, 30⋮1030⋮ 10), 42 (2+3+7=122+3+7=12 không chia hết), 40 (2+5=72+5=7). Cụ thể 3 số thỏa mãn là 30, 70 không nằm trong đoạn, các số thỏa mãn gồm: 30, ...

Ghi chú minh họa: Ba số thỏa mãn trong đoạn [1;45][1;45] là 30 (30⋮1030⋮ 10), 120 không nằm trong phạm vi, 70 không nằm trong phạm vi, có các số như 30,4230,42 ...

Ràng buộc:

- Subtask 1 (40% số điểm): 1≤L≤R≤5⋅1031\leq L\leq R\leq 5\cdot {10}^{3}.

- Subtask 2 (30% số điểm): 1≤L≤R≤2⋅1051\leq L\leq R\leq 2\cdot {10}^{5}.

- Subtask 3 (30% số điểm): 1≤L≤R≤5⋅1061\leq L\leq R\leq 5\cdot {10}^{6}.

Bài 2 (4,0 điểm). Tín hiệu hoán vị

Trung tâm nghiên cứu vũ trụ nhận được hai chuỗi sóng tín hiệu số biểu diễn bằng hai xâu ký tự AA và BB chỉ chứa các chữ cái tiếng Anh in thường ('a' đến 'z').

Để giải mã thông điệp, các kỹ sư cần xác định tần suất xuất hiện của mẫu tín hiệu AA trong dòng tín hiệu BB. Một đoạn con gồm các ký tự liên tiếp của BB được gọi là trùng khớp hoán vị với AA nếu đoạn con đó có cùng độ dài với AA và tập hợp các ký tự trong đoạn con đó (kể cả số lần xuất hiện của mỗi ký tự) hoàn toàn trùng khớp với xâu AA khi đổi chỗ các ký tự.

Yêu cầu: Cho trước hai xâu AA và BB. Hãy đếm số lượng đoạn con liên tiếp trong BB là một trùng khớp hoán vị của AA.

Dữ liệu vào: Đọc từ tệp `PERMSTR.INP` gồm:

- Dòng thứ nhất chứa xâu ký tự AA (1≤∣A∣≤1051\leq ∣A∣\leq {10}^{5}).

- Dòng thứ hai chứa xâu ký tự BB (1≤∣B∣≤1061\leq ∣B∣\leq {10}^{6}).

Hai xâu chỉ bao gồm các chữ cái tiếng Anh in thường.

Dữ liệu ra: Ghi ra tệp `PERMSTR.OUT` một số nguyên duy nhất là số lượng đoạn con thỏa mãn yêu cầu.

Ví dụ:

PERMSTR.INP

PERMSTR.OUT

Giải thích

`abbc`
`cbbabbcab`

`2`

Xâu AA gồm 1 ký tự 'a', 2 ký tự 'b', 1 ký tự 'c' (độ dài 4).
Các đoạn con độ dài 4 của BB là hoán vị của AA gồm:
- Đoạn từ vị trí 1 đến 4: "cbba" (chứa 1 'a', 2 'b', 1 'c')
- Đoạn từ vị trí 5 đến 8: "bbca" (chứa 1 'a', 2 'b', 1 'c')
Tổng cộng có 2 vị trí thỏa mãn.

Ràng buộc:

- Subtask 1 (50% số điểm): ∣A∣≤500,∣B∣≤5⋅103∣A∣\leq 500,∣B∣\leq 5\cdot {10}^{3}.

- Subtask 2 (50% số điểm): ∣A∣≤105,∣B∣≤106∣A∣\leq {10}^{5},∣B∣\leq {10}^{6}.

Bài 3 (4,0 điểm). Đoạn thặng dư ngắn nhất

Cho dãy số nguyên gồm NN phần tử A=(a1,a2,…,aN)A=({a}_{1},{a}_{2},\ldots ,{a}_{N}) và hai số nguyên dương M,KM,K (0≤K<M0\leq K<M).

Một đoạn con liên tiếp A[L..R]A[L..R] (1≤L≤R≤N1\leq L\leq R\leq N) có tổng các phần tử là S=aL+aL+1+⋯+aRS={a}_{L}+{a}_{L+1}+\cdots +{a}_{R}. Đoạn con này được gọi là đoạn thặng dư bậc (M,K)(M,K) nếu tổng SS khi chia cho MM có số dư đúng bằng KK, nghĩa là:

S(modM)=K(với S≥0 hoặc quy ước so^ˊ dư chuẩn kho^ng a^m ((S mod M)+M) mod M=K)S (mod M)=K (với~S\geq 0~hoặc~quy~ước~số~dư~chuẩn~không~âm~((S mod M)+M) mod M=K)

Yêu cầu: Hãy tìm độ dài nhỏ nhất của một đoạn thặng dư trong dãy AA. Độ dài của đoạn con từ chỉ số LL đến RR được tính bằng R−L+1R-L+1. Nếu không tồn tại đoạn thặng dư nào, in ra −1-1.

Dữ liệu vào: Đọc từ tệp `DIFFSEG.INP` gồm:

- Dòng đầu tiên chứa ba số nguyên N,M,KN,M,K (1≤N≤2⋅1051\leq N\leq 2\cdot {10}^{5}; 2≤M≤1062\leq M\leq {10}^{6}; 0≤K<M0\leq K<M).

- Dòng thứ hai chứa NN số nguyên a1,a2,…,aN{a}_{1},{a}_{2},\ldots ,{a}_{N} (−109≤ai≤109-{10}^{9}\leq {a}_{i}\leq {10}^{9}), các số cách nhau một khoảng trắng.

Dữ liệu ra: Ghi ra tệp `DIFFSEG.OUT` một số nguyên duy nhất là độ dài nhỏ nhất của đoạn thặng dư tìm được, hoặc ghi −1-1 nếu không tồn tại.

Ví dụ:

DIFFSEG.INP

DIFFSEG.OUT

Giải thích

`6 5 2`
`3 1 4 2 8 3`

`1`

Các đoạn con có tổng chia 5 dư 2:
- Đoạn A[4..4]=[2]A[4..4]=[2] có tổng 2 chia 5 dư 2 (độ dài 1).
Độ dài nhỏ nhất tìm được là 1.

`5 7 4`
`8 1 5 10 2`

`2`

Đoạn A[1..2]=[8,1]A[1..2]=[8,1] có tổng 9(mod7)=29 (mod 7)=2.
Đoạn A[2..3]=[1,5]A[2..3]=[1,5] có tổng 6(mod7)=66 (mod 7)=6.
Đoạn A[4..5]=[10,2]A[4..5]=[10,2] có tổng 12(mod7)=512 (mod 7)=5.
Đoạn A[3..4]=[5,10]A[3..4]=[5,10] có tổng 15(mod7)=115 (mod 7)=1.
Đoạn A[1..3]=[8,1,5]A[1..3]=[8,1,5] có tổng 14(mod7)=014 (mod 7)=0.
Đoạn A[5..5]=[2]A[5..5]=[2] có tổng 2.
Đoạn A[3..5]=[5,10,2]A[3..5]=[5,10,2] có tổng 17(mod7)=317 (mod 7)=3.
Đoạn A[2..4]=[1,5,10]A[2..4]=[1,5,10] có tổng 16(mod7)=216 (mod 7)=2.
Đoạn A[2..5]=[1,5,10,2]A[2..5]=[1,5,10,2] có tổng 18(mod7)=418 (mod 7)=4 (độ dài 4).
Nhưng đoạn A[1..4]=[8,1,5,10]A[1..4]=[8,1,5,10] có tổng 24(mod7)=324 (mod 7)=3.
Xét đoạn A[1..5]=26(mod7)=5A[1..5]=26 (mod 7)=5.
Đoạn ngắn nhất có tổng chia 7 dư 4 là đoạn nào? Xét số dư cộng dồn: S=[8,9,14,24,26]≡[1,2,0,3,5]S=[8,9,14,24,26]\equiv [1,2,0,3,5]. Hiệu dư bằng 4 có 5−1=45-1=4, ứng với đoạn A[2..5]A[2..5] độ dài 4. (Nếu test cho độ dài ngắn nhất là 4, in ra 4).

Ràng buộc:

- Subtask 1 (40% số điểm): N≤2000N\leq 2000.

- Subtask 2 (60% số điểm): N≤2⋅105N\leq 2\cdot {10}^{5}.

Bài 4 (4,0 điểm). Khai thác khoáng sản

Một khu vực thăm dò khoáng sản được mô hình hóa bởi một bảng số hình chữ nhật gồm MM hàng và NN cột. Ô nằm ở hàng ii, cột jj có trữ lượng quặng là một số nguyên C[i][j]C[i][j] (1≤i≤M,1≤j≤N1\leq i\leq M,1\leq j\leq N).

Một giàn khoan khai thác dạng chữ X có kích thước K×KK\times K (KK là số nguyên lẻ, 1≤K≤min(M,N)1\leq K\leq min(M,N)) khi đặt vào bảng sẽ bao phủ một hình vuông con kích thước K×KK\times K. Giàn khoan chỉ hút quặng tại các ô nằm trên hai đường chéo (đường chéo chính và đường chéo phụ) của hình vuông con đó.

Hiệu suất của giàn khoan được tính bằng tổng trữ lượng của tất cả các ô nằm trên hai đường chéo của hình vuông con kích thước K×KK\times K đó (ô giao điểm ở tâm chỉ được cộng đúng 1 lần).

Yêu cầu: Cho kích thước bảng M,NM,N, kích thước giàn khoan KK và ngưỡng hiệu suất TT. Hãy đếm xem có bao nhiêu vị trí đặt hình vuông con K×KK\times K trong bảng sao cho hiệu suất của giàn khoan đạt từ TT trở lên.

Dữ liệu vào: Đọc từ tệp `MINE.INP` gồm:

- Dòng thứ nhất chứa bốn số nguyên M,N,K,TM,N,K,T (1≤M,N≤10001\leq M,N\leq 1000; K≤min(M,N)K\leq min(M,N), KK là số lẻ; −109≤T≤109-{10}^{9}\leq T\leq {10}^{9}).

- MM dòng tiếp theo, dòng thứ ii chứa NN số nguyên C[i][1],C[i][2],…,C[i][N]C[i][1],C[i][2],\ldots ,C[i][N] (−104≤C[i][j]≤104-{10}^{4}\leq C[i][j]\leq {10}^{4}).

Dữ liệu ra: Ghi ra tệp `MINE.OUT` một số nguyên duy nhất là số lượng vị trí đặt giàn khoan thỏa mãn.

Ví dụ:

MINE.INP

MINE.OUT

Giải thích

`4 4 3 15`
`2 1 3 4`
`1 5 2 1`
`4 3 2 6`
`1 2 4 5`

`2`

Bảng kích thước 4×44\times 4, giàn khoan 3×33\times 3, ngưỡng T=15T=15.
Có 4 vị trí đặt hình vuông 3×33\times 3:
1. Góc trên-trái (hàng 1..3, cột 1..3): 2 đường chéo gồm (2, 5, 2) và (3, 5, 4). Tổng =2+5+2+3+4=16≥15=2+5+2+3+4=16\geq 15 (ô tâm 5 tính 1 lần).
2. Hàng 1..3, cột 2..4: đường chéo (1, 2, 6) và (4, 2, 3). Tổng =1+2+6+4+3=16≥15=1+2+6+4+3=16\geq 15.
3. Hàng 2..4, cột 1..3: đường chéo (1, 3, 4) và (2, 3, 1). Tổng =1+3+4+2+1=11<15=1+3+4+2+1=11<15.
4. Hàng 2..4, cột 2..4: đường chéo (5, 2, 5) và (1, 2, 4). Tổng =5+2+5+1+4=17≥15=5+2+5+1+4=17\geq 15.
Có 3 vị trí thỏa mãn là 1, 2 và 4.

Ràng buộc:

- Subtask 1 (40% số điểm): M,N≤100M,N\leq 100.

- Subtask 2 (60% số điểm): M,N≤1000M,N\leq 1000.

Bài 5 (4,0 điểm). Dãy bậc thang dài nhất

Cho một dãy số nguyên gồm NN phần tử A=(a1,a2,…,aN)A=({a}_{1},{a}_{2},\ldots ,{a}_{N}) và hai số nguyên dương D1,D2{D}_{1},{D}_{2} (D1≤D2{D}_{1}\leq {D}_{2}).

Một dãy con của dãy AA thu được bằng cách chọn ra một số phần tử giữ nguyên thứ tự xuất hiện ban đầu: ai1,ai2,…,aim{a}_{{i}_{1}},{a}_{{i}_{2}},\ldots ,{a}_{{i}_{m}} với 1≤i1<i2<⋯<im≤N1\leq {i}_{1}<{i}_{2}<\cdots <{i}_{m}\leq N. Dãy con này được gọi là dãy bậc thang tăng nếu:

1. Dãy có độ dài m≥1m\geq 1;

2. Với mọi jj (1≤j<m1\leq j<m), hiệu giữa hai phần tử liên tiếp thỏa mãn:

D1≤aij+1−aij≤D2{D}_{1}\leq {a}_{{i}_{j+1}}-{a}_{{i}_{j}}\leq {D}_{2}

Yêu cầu: Hãy tìm độ dài lớn nhất mm của một dãy con bậc thang tăng trích từ dãy AA.

Dữ liệu vào: Đọc từ tệp `STAIRS.INP` gồm:

- Dòng đầu tiên chứa ba số nguyên N,D1,D2N,{D}_{1},{D}_{2} (1≤N≤5000;1≤D1≤D2≤1091\leq N\leq 5000;1\leq {D}_{1}\leq {D}_{2}\leq {10}^{9}).

- Dòng thứ hai chứa NN số nguyên a1,a2,…,aN{a}_{1},{a}_{2},\ldots ,{a}_{N} (−109≤ai≤109-{10}^{9}\leq {a}_{i}\leq {10}^{9}), các số cách nhau một khoảng trắng.

Dữ liệu ra: Ghi ra tệp `STAIRS.OUT` một số nguyên duy nhất là độ dài lớn nhất của dãy con bậc thang tìm được.

Ví dụ:

STAIRS.INP

STAIRS.OUT

Giải thích

`7 2 4`
`1 5 3 7 6 10 9`

`4`

Dãy con bậc thang dài nhất có độ dài 4, ví dụ dãy chọn tại các chỉ số 1,3,4,61,3,4,6 là: (1,3,7,10)(1,3,7,10).
- a3−a1=3−1=2∈[2,4]{a}_{3}-{a}_{1}=3-1=2\in [2,4]
- a4−a3=7−3=4∈[2,4]{a}_{4}-{a}_{3}=7-3=4\in [2,4]
- a6−a4=10−7=3∈[2,4]{a}_{6}-{a}_{4}=10-7=3\in [2,4]
Độ dài dãy con là 4.

Ràng buộc:

- Subtask 1 (30% số điểm): N≤20N\leq 20.

- Subtask 2 (40% số điểm): N≤1000N\leq 1000.

- Subtask 3 (30% số điểm): N≤5000N\leq 5000.

--------- HẾT ---------
Thí sinh không được sử dụng tài liệu và thiết bị truyền tin. Giám thị không giải thích gì thêm.

Họ và tên thí sinh: ................................................................ Số báo danh: ........................

Xem tất cả