76 Đề thi HSG Tin 9 cấp Tỉnh Có đáp án mới nhất (File Word & PDF)
Bạn đang tìm kiếm nguồn tài liệu ôn thi học sinh giỏi Tin học lớp 9 để chuẩn bị cho kỳ thi cấp huyện, cấp tỉnh sắp tới? Việc luyện đề từ các tỉnh thành khác nhau là phương pháp hiệu quả nhất để làm quen với cấu trúc đề, các dạng bài lập trình khó và cách tối ưu thuật toán.
Bài viết này tổng hợp 76 đề thi HSG Tin 9 cấp tỉnh có đáp án chi tiết, giúp các bạn học sinh tự tin chinh phục giải cao.
Các đề ôn thi để chuẩn bị thi Cấp XÃ thì các em vào đường dẫn phía dưới để tham khảo giúp thầy nhé!
- Giải đề 1 và đáp án thi Học sinh giỏi tin học Python C++ THCS có tài liệu ôn thi
- Giải đề 2 và đáp án thi Học sinh giỏi tin học Python C++ THCS có tài liệu ôn thi
- Giải đề 3 thi học sinh giỏi tin học lập trình Python có đáp án
- Giải đề 4 ôn thi học sinh giỏi Tin Học THCS lập trình Python có đáp án
- Giải đề 5 và đáp án thi HSG Tin Python có số Pell.
- Giải đề 6 và đáp án bồi dưỡng học sinh giỏi tin 10 có số Armstrong
- Giải đề 7 và đáp án thi học sinh giỏi tin học 10 Python có số Collatz
- Giải đề 8 trong 20 đề Bồi dưỡng học sinh giỏi Tin học lớp 9 có số Kaprekar.
- Giải đề 9 thi HSG Tin học lớp 8 lập trình Python có số Happy
- Giải đề 10 thi tin học trẻ THPT có bài In các xâu con trong xâu s.
DANH SÁCH TÓM TẮT:
- 1 1. Tại sao cần luyện đề thi HSG Tin học 9 các năm trước?
- 2 2. Cấu trúc bộ đề thi HSG Tin 9 trong bộ sưu tập này
- 3 3. Danh sách một số đề thi tiêu biểu trong bộ 76 đề
- 4 4. Link tải 76 Đề thi HSG Tin 9 cấp Tỉnh Có đáp án (Full File Word/PDF)
- 5 5. Kinh nghiệm đạt điểm cao trong kỳ thi HSG Tin học 9
- 6 Giải đáp án bài 1: Tiền Điện
- 7 Giải đáp án bài 2: Độ mạnh của xâu?
- 8 🧠 Tư duy giải
- 9 📌 Giải Đáp Án Bài 3: Tổng dòng cột (SUM)
- 10 📌 Bài 4: Xâu lặp (SUBSTR)
- 11 📌Giải Đáp Án Bài 5: Phần thưởng (GIFT)
- 12 Câu hỏi thường gặp về đề thi HSG Tin 9:
1. Tại sao cần luyện đề thi HSG Tin học 9 các năm trước?
Kỳ thi học sinh giỏi Tin học lớp 9 thường tập trung vào kỹ năng giải quyết vấn đề thông qua lập trình (Pascal, C++, hoặc Python). Việc luyện tập với bộ 76 đề thi HSG Tin 9 sẽ giúp bạn:
Nắm vững cấu trúc đề: Thông thường gồm 3-4 bài với độ khó tăng dần (bài toán số học, xử lý xâu, quy hoạch động, đồ thị cơ bản).
Rèn luyện tư duy thuật toán: Tiếp cận với nhiều dạng bài mới lạ từ các tỉnh thành có phong trào Tin học mạnh như Nghệ An, Thanh Hóa, Hà Nội, Nam Định…
Kỹ năng trình bày: Xem đáp án chi tiết giúp bạn hiểu cách chấm điểm và tối ưu mã nguồn để đạt điểm tối đa.
2. Cấu trúc bộ đề thi HSG Tin 9 trong bộ sưu tập này
Bộ tài liệu 76 đề thi HSG Tin 9 cấp tỉnh có đáp án được chúng tôi sưu tầm và biên soạn lại một cách khoa học:
Đa dạng ngôn ngữ: Hỗ trợ lời giải bằng Pascal, C++ (phổ biến nhất) và một số đề mới có hướng dẫn bằng Python.
Phân loại theo chuyên đề: * Bài tập về số học (Số nguyên tố, số chính phương, số đặc biệt).
Xử lý xâu ký tự và tệp dữ liệu.
Thuật toán tìm kiếm và sắp xếp.
Kỹ thuật đệ quy và quy hoạch động cơ bản.
Có đáp án và hướng dẫn chấm: Giúp học sinh và giáo viên dễ dàng đối chiếu kết quả.
3. Danh sách một số đề thi tiêu biểu trong bộ 76 đề
Dưới đây là một số đề thi “hot” nhất trong bộ sưu tập mà bạn không nên bỏ qua:
Đề thi HSG Tin 9 tỉnh Nghệ An (Bảng A, B).
Đề thi HSG Tin 9 tỉnh Thanh Hóa (Đầy đủ các năm).
Đề thi chọn đội tuyển HSG lớp 9 TP. Hà Nội.
Đề thi giao lưu học sinh giỏi các tỉnh đồng bằng Bắc Bộ.
Đề thi tuyển sinh vào lớp 10 chuyên Tin (Phần tự chọn HSG 9).
4. Link tải 76 Đề thi HSG Tin 9 cấp Tỉnh Có đáp án (Full File Word/PDF)
Để hỗ trợ các bạn ôn tập tốt nhất, chúng tôi đã đóng gói toàn bộ 76 đề thi vào một thư mục duy nhất. Bạn có thể tải về hoàn toàn miễn phí theo đường link dưới đây:
[Link Tải Xuống 76 Đề Thi HSG Tin 9 Có Đáp Án Tại Đây]
(Lưu ý: Nếu link lỗi, vui lòng để lại bình luận phía dưới để admin cập nhật ngay lập tức).
5. Kinh nghiệm đạt điểm cao trong kỳ thi HSG Tin học 9
Ngoài việc luyện đề, bạn cần lưu ý:
Đọc kỹ đề bài: Xác định rõ ràng Input, Output và các giới hạn (Constraints) của đề.
Quản lý thời gian: Đừng quá sa đà vào bài khó, hãy hoàn thành chắc chắn các bài dễ để lấy điểm tuyệt đối trước.
Kiểm tra kỹ các trường hợp biên: Test thử với dữ liệu nhỏ nhất, lớn nhất hoặc các trường hợp đặc biệt (n = 0, n = 1…).
Cập nhật ngôn ngữ: Hiện nay nhiều tỉnh đã cho phép sử dụng C++11, C++17 và Python, hãy tận dụng các thư viện mạnh mẽ để rút ngắn thời gian làm bài.
Lời kết: Hy vọng bộ tài liệu 76 đề thi HSG Tin 9 cấp tỉnh có đáp án này sẽ là hành trang vững chắc giúp các bạn đạt kết quả cao trong kỳ thi sắp tới. Nếu thấy tài liệu hữu ích, hãy chia sẻ cho bạn bè cùng ôn tập nhé!

Giải đáp án bài 1: Tiền Điện
📌 Phân tích đề bài (tư duy giải)
Có n hộ gia đình, mỗi hộ dùng
aᵢKWh điện.Giá điện chia 3 bậc:
| Bậc | Số KWh | Giá |
|---|---|---|
| 1 | 1 → 100 | 2500 đ/KWh |
| 2 | 101 → 200 | 3000 đ/KWh |
| 3 | ≥ 201 | 3500 đ/KWh |
👉 Với mỗi hộ, ta:
Tính tiền bậc 1 (tối đa 100 KWh)
Nếu còn → tính tiếp bậc 2 (tối đa 100 KWh)
Nếu còn nữa → bậc 3
👉 Cộng tiền của tất cả các hộ lại.
🧠 Thuật toán
Với mỗi a (số KWh của 1 hộ):
Nếu
a ≤ 100
→ tiền =a * 2500Nếu
100 < a ≤ 200
→ tiền =100*2500 + (a-100)*3000Nếu
a > 200
→ tiền =100*2500 + 100*3000 + (a-200)*3500
Code Python (chuẩn thi)
import sys
sys.stdin = open("ELCOST.INP", "r")
sys.stdout = open("ELCOST.OUT", "w")
# Đọc số hộ gia đình
n = int(sys.stdin.readline().strip())
# Đọc danh sách số KWh của các hộ
danh_sach = list(map(int, sys.stdin.readline().split()))
tong_tien = 0
for a in danh_sach:
if a <= 100:
tien = a * 2500
elif a <= 200:
tien = 100 * 2500 + (a - 100) * 3000
else:
tien = 100 * 2500 + 100 * 3000 + (a - 200) * 3500
tong_tien += tien
# In kết quả
print(tong_tien)
✍️ Giải thích code ngắn gọn
sys.stdin,sys.stdout→ đúng chuẩn chấm bài tự độngDuyệt từng hộ → tính tiền đúng theo bậc
Cộng dồn vào
tong_tienIn ra một số nguyên duy nhất
⏱️ Phân tích độ phức tạp
Vòng lặp chạy n lần
Mỗi lần chỉ tính toán hằng số
👉 Độ phức tạp thời gian:
O(n)
👉 Độ phức tạp bộ nhớ:
O(1)
✅ Nhận xét theo chuẩn bài thi HSG
✔ Thuật toán đơn giản – đúng bản chất
✔ Không bị tràn số
✔ Chạy nhanh với n ≤ 10^4
✔ Dễ mở rộng nếu đề thêm bậc điện
Giải đáp án bài 2: Độ mạnh của xâu?
🔍 Phân tích đề bài
Cho xâu
sgồm:Chữ cái thường
a–zChữ số
0–9
Không có khoảng trắng, không có ký tự đặc biệt
Độ dài xâu ≤
10^3
👉 Định nghĩa “độ mạnh của xâu”
Độ mạnh=(số kí tự phân biệt×(số lần xuất hiện nhiều nhất của 1kí tự )
🧠 Tư duy giải
Ta cần 2 thông tin:
Số kí tự phân biệt trong xâu
Chính là số lượng kí tự khác nhau
Số lần xuất hiện nhiều nhất
Tìm kí tự xuất hiện nhiều nhất
👉 Cách làm hiệu quả:
Dùng dictionary (từ điển) để đếm số lần xuất hiện của từng kí tự
Code Python (chuẩn thi)
import sys
sys.stdin = open("STRONG.INP", "r")
sys.stdout = open("STRONG.OUT", "w")
# Đọc xâu
s = sys.stdin.readline().strip()
dem = {}
# Đếm số lần xuất hiện của từng kí tự
for ch in s:
if ch in dem:
dem[ch] += 1
else:
dem[ch] = 1
# Số kí tự phân biệt
so_ki_tu_phan_biet = len(dem)
# Số lần xuất hiện nhiều nhất
lan_xuat_hien_nhieu_nhat = max(dem.values())
# Độ mạnh của xâu
do_manh = so_ki_tu_phan_biet * lan_xuat_hien_nhieu_nhat
print(do_manh)
✍️ Giải thích code
dem: từ điển lưukhóa = kí tự
giá trị = số lần xuất hiệnlen(dem)→ số kí tự phân biệtmax(dem.values())→ tần suất lớn nhấtNhân 2 giá trị → độ mạnh
🧪 Kiểm tra bằng ví dụ đề bài
Ví dụ 1
Kí tự phân biệt:
{x, y, 1, z, 2, 0}→ 6Kí tự xuất hiện nhiều nhất:
y→ 5 lần
👉 Kết quả:6 * 5 = 30
Ví dụ 2
Phân biệt: 1
Xuất hiện nhiều nhất: 5
👉 Kết quả:1 * 5 = 5
⏱️ Phân tích độ phức tạp
Duyệt xâu độ dài
nđúng 1 lần
👉 Thời gian:
O(n)
👉 Bộ nhớ:
O(k)≤O(n)
(với k là số kí tự phân biệt)
✅ Nhận xét theo chuẩn HSG
✔ Thuật toán đơn giản – đúng bản chất
✔ Không dùng thư viện nâng cao
✔ Chạy rất nhanh với n ≤ 1000
✔ Dễ trình bày trong bài thi
📌 Giải Đáp Án Bài 3: Tổng dòng cột (SUM)
🔍 Nội dung đề bài (tóm tắt)
Cho ma trận a gồm
mdòng vàncột.Tạo ma trận b theo công thức:
bij=(tổng doˋng i của a+tổng cột j của a)−aijb_{ij}
👉 Yêu cầu
Tìm giá trị nhỏ nhất trong ma trận b.
🧠 Tư duy giải (rất quan trọng – hay ra thi)
Nếu làm ngây thơ:
Với mỗi ô
(i, j)lại đi tính tổng dòng + tổng cột
❌ → chậm:O(m*n*(m+n))→ dễ TLE
👉 Cách làm đúng chuẩn HSG:
Bước 1:
Tính tổng từng dòng → mảng
tong_dong[i]Tính tổng từng cột → mảng
tong_cot[j]
Bước 2:
Với mỗi ô
(i, j):
bij=tong_dong[i]+tong_cot[j]−a[i][j]
Cập nhật giá trị nhỏ nhất
⚡ Không cần lưu ma trận b → tiết kiệm bộ nhớ
Code Python (chuẩn thi)
import sys
sys.stdin = open("SUM.INP", "r")
sys.stdout = open("SUM.OUT", "w")
# Đọc m, n
m, n = map(int, sys.stdin.readline().split())
# Đọc ma trận a
a = []
for _ in range(m):
a.append(list(map(int, sys.stdin.readline().split())))
# Tính tổng từng dòng
tong_dong = [0] * m
for i in range(m):
tong_dong[i] = sum(a[i])
# Tính tổng từng cột
tong_cot = [0] * n
for j in range(n):
for i in range(m):
tong_cot[j] += a[i][j]
# Tìm giá trị nhỏ nhất trong ma trận b
INF = 10**18
min_b = INF
for i in range(m):
for j in range(n):
b_ij = tong_dong[i] + tong_cot[j] - a[i][j]
if b_ij < min_b:
min_b = b_ij
print(min_b)
✍️ Giải thích code ngắn gọn
tong_dong[i]: tổng dòngitong_cot[j]: tổng cộtjVới mỗi ô
(i, j):Áp dụng đúng công thức đề
Cập nhật
min_b
Không cần tạo ma trận
b→ tối ưu
⏱️ Phân tích độ phức tạp
Tính tổng dòng:
O(mn)Tính tổng cột:
O(mn)Duyệt tìm min:
O(mn)
👉 Tổng thời gian:
O(m×n)
👉 Bộ nhớ:
O(m+n)
✅ Nhận xét chuẩn HSG
✔ Áp dụng tiền xử lý (precompute)
✔ Tránh lặp thừa – tư duy tối ưu
✔ Phù hợp ma trận lớn
✔ Rất dễ ăn trọn 4 điểm
📌 Bài 4: Xâu lặp (SUBSTR)
🔍 Tóm tắt dạng bài (chuẩn đề Tiền Giang)
Cho một xâu
s(chỉ gồm chữ thường và chữ số, không có khoảng trắng)Xâu có độ dài ≤
10^3Yêu cầu:
👉 Tìm xâu con dài nhất xuất hiện ít nhất 2 lần trongs
(cho phép chồng lấn)
Đây là dạng bài xâu lặp (longest repeated substring) – rất hay ra thi tỉnh.
🧠 Tư duy giải (đúng mức THCS – không dùng suffix array)
Vì |s| ≤ 1000, ta có thể dùng cách duyệt độ dài + kiểm tra trùng:
Ý tưởng:
Duyệt độ dài xâu con
Ltừ lớn xuống nhỏVới mỗi
L, duyệt tất cả các xâu con độ dàiLDùng set để kiểm tra:
Nếu một xâu con đã xuất hiện → tìm được đáp án
Gặp độ dài lớn nhất đầu tiên → dừng luôn
👉 Cách này dễ cài, dễ trình bày, đủ nhanh cho đề tỉnh.
import sys
sys.stdin = open("SUBSTR.INP", "r")
sys.stdout = open("SUBSTR.OUT", "w")
s = sys.stdin.readline().strip()
n = len(s)
ket_qua = ""
# Duyệt độ dài xâu con từ lớn xuống nhỏ
for L in range(n - 1, 0, -1):
tap_con = set()
found = False
for i in range(n - L + 1):
sub = s[i:i+L]
if sub in tap_con:
ket_qua = sub
found = True
break
tap_con.add(sub)
if found:
break
print(ket_qua)
✍️ Giải thích code
Duyệt
Ltừn-1→1
→ đảm bảo lấy xâu dài nhấtVới mỗi
L:Cắt các xâu con
s[i:i+L]Dùng
setđể kiểm tra trùng
Khi phát hiện xâu lặp đầu tiên → in ra ngay
🧪 Ví dụ minh họa
Ví dụ
Các xâu lặp dài nhất:
"ababa"xuất hiện 2 lần (chồng lấn)
👉 Kết quả:
⏱️ Phân tích độ phức tạp
Duyệt độ dài:
O(n)Với mỗi độ dài, duyệt xâu con:
O(n)Cắt xâu + set:
O(n)
👉 Tổng:
O(n3) (với n≤1000 là chấp nhận được)
👉 Bộ nhớ:
O(n2)
✅ Nhận xét chuẩn HSG
✔ Không dùng thuật toán nâng cao (suffix array, Z, KMP)
✔ Dễ hiểu – dễ chép vào bài thi
✔ Đủ nhanh với dữ liệu đề tỉnh
✔ Trình bày rất “ăn điểm”
📌Giải Đáp Án Bài 5: Phần thưởng (GIFT)
🔍 Phân tích đề bài
Có một dãy số là giá trị các phần thưởng (sắp theo một hàng).
Mỗi phần thưởng có giá trị từ
1đến10^9.An muốn chọn một đoạn liên tiếp sao cho:
👉 giá trị tăng dần liên tiếp
(tức là: số sau lớn hơn số trước).
👉 Yêu cầu
Tìm độ dài lớn nhất của đoạn tăng dần liên tiếp.
📌 Lưu ý:
Chỉ xét liên tiếp
Không cần tăng đúng 1, chỉ cần lớn hơn
🧠 Tư duy giải (rất chuẩn thi)
Đây là bài:
Dãy con tăng liên tiếp dài nhất
👉 Không cần quy hoạch động phức tạp.
Ý tưởng:
Duyệt từ trái sang phải
Nếu
a[i] > a[i-1]:tăng độ dài đoạn hiện tại
Ngược lại:
bắt đầu đoạn mới
Luôn cập nhật độ dài lớn nhất
import sys
sys.stdin = open("GIFT.INP", "r")
sys.stdout = open("GIFT.OUT", "w")
# Đọc dãy phần thưởng
a = list(map(int, sys.stdin.readline().split()))
n = len(a)
# Nếu dãy rỗng (trường hợp hiếm)
if n == 0:
print(0)
else:
max_len = 1 # độ dài lớn nhất
cur_len = 1 # độ dài đoạn hiện tại
for i in range(1, n):
if a[i] > a[i - 1]:
cur_len += 1
else:
cur_len = 1
if cur_len > max_len:
max_len = cur_len
print(max_len)
✍️ Giải thích code
cur_len: độ dài đoạn tăng dần đang xétmax_len: kết quả lớn nhấtKhi gặp
a[i] ≤ a[i-1]:chuỗi tăng bị phá vỡ → reset
cur_len = 1
Duyệt xong là ra kết quả
🧪 Kiểm tra ví dụ đề bài
Ví dụ 1
Đoạn tăng dài nhất:
👉 Độ dài = 4
Ví dụ 2
Đoạn tăng dài nhất:
👉 Độ dài = 3
⏱️ Phân tích độ phức tạp
Duyệt dãy 1 lần
👉 Thời gian:
O(n)
👉 Bộ nhớ:
O(1)
✅ Nhận xét chuẩn HSG
✔ Bài điển hình – dễ ăn điểm
✔ Không cần mảng phụ
✔ Chạy rất nhanh dù n lớn
✔ Trình bày rõ ràng, sạch sẽ
Nếu bạn thấy hay ! xin bạn 1 phút ! vui lòng đánh giá 5 sao cho trang website của chúng tôi ! để có động lực làm thêm nhiều bài hay nữa ! cảm ơn quý khách nhé !

Khóa học Python online từ cơ bản đến nâng cao
Câu hỏi thường gặp về đề thi HSG Tin 9:
Bộ 76 đề thi HSG Tin 9 này có kèm đáp án không? Dạ có, toàn bộ 76 đề thi trong bộ sưu tập đều đi kèm đáp án chi tiết và hướng dẫn giải thuật bằng các ngôn ngữ phổ biến như Pascal, C++, Python.
Tài liệu này có bao gồm đề thi của những năm gần đây không? Có, bộ tài liệu được cập nhật các đề thi HSG cấp tỉnh mới nhất (năm học 2023-2024 và 2024-2025) từ các tỉnh thành có phong trào Tin học mạnh.
Tôi có thể tải file Word để về chỉnh sửa không? Được ạ, link tải bao gồm cả định dạng PDF để xem nhanh và file Word (.docx) để quý thầy cô và các bạn học sinh tiện trích dẫn, chỉnh sửa đề bài.
Luyện đề thi HSG Tin 9 nên tập trung vào ngôn ngữ nào? Hiện nay hầu hết các tỉnh đã chuyển sang C++ và Python. Tuy nhiên, bộ đề vẫn giữ lại các lời giải bằng Pascal cho những địa phương chưa thay đổi hình thức thi.

