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é!
DANH SÁCH TÓM TẮT:
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.
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ả.
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).
Để 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).
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é!
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.
Với mỗi a (số KWh của 1 hộ):
Nếu a ≤ 100
→ tiền = a * 2500
Nếu 100 < a ≤ 200
→ tiền = 100*2500 + (a-100)*3000
Nếu a > 200
→ tiền = 100*2500 + 100*3000 + (a-200)*3500
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)
sys.stdin, sys.stdout → đúng chuẩn chấm bài tự động
Duyệt từng hộ → tính tiền đúng theo bậc
Cộng dồn vào tong_tien
In ra một số nguyên duy nhất
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)
✔ 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
Cho xâu s gồm:
Chữ cái thường a–z
Chữ số 0–9
Không có khoảng trắng, không có ký tự đặc biệt
Độ dài xâu ≤ 10^3
Độ mạnh=(số kí tự phân biệt×(số lần xuất hiện nhiều nhất của 1kí tự )
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ự
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)
dem: từ điển lưu
khóa = kí tự
giá trị = số lần xuất hiện
len(dem) → số kí tự phân biệt
max(dem.values()) → tần suất lớn nhất
Nhân 2 giá trị → độ mạnh
Kí tự phân biệt: {x, y, 1, z, 2, 0} → 6
Kí tự xuất hiện nhiều nhất: y → 5 lần
👉 Kết quả: 6 * 5 = 30
Phân biệt: 1
Xuất hiện nhiều nhất: 5
👉 Kết quả: 1 * 5 = 5
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)
✔ 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
Cho ma trận a gồm m dòng và n cộ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}
Tìm giá trị nhỏ nhất trong ma trận b.
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:
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]
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ớ
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)
tong_dong[i]: tổng dòng i
tong_cot[j]: tổng cột j
Vớ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
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)
✔ Á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
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^3
Yêu cầu:
👉 Tìm xâu con dài nhất xuất hiện ít nhất 2 lần trong s
(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.
Vì |s| ≤ 1000, ta có thể dùng cách duyệt độ dài + kiểm tra trùng:
Duyệt độ dài xâu con L từ lớn xuống nhỏ
Với mỗi L, duyệt tất cả các xâu con độ dài L
Dù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)
Duyệt L từ n-1 → 1
→ đảm bảo lấy xâu dài nhất
Vớ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
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ả:
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)
✔ 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”
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 đến 10^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).
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
Đâ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.
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)
cur_len: độ dài đoạn tăng dần đang xét
max_len: kết quả lớn nhất
Khi 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ả
Đoạn tăng dài nhất:
👉 Độ dài = 4
Đoạn tăng dài nhất:
👉 Độ dài = 3
Duyệt dãy 1 lần
👉 Thời gian:
O(n)
👉 Bộ nhớ:
O(1)
✔ 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ẽ
Khóa học Python online từ cơ bản đến nâng cao
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.
Phần 2: Tải ngay 200 Bài lập trình Python có lời giải cơ bản đến…
Tổng Hợp Các Hàm Python "Cốt Lõi" Khi Thi HSG Tỉnh Và Vào 10 Chuyên…
Nếu bạn đang ôn thi học sinh giỏi Tin học THCS cấp tỉnh Tiền Giang,…
Tổng Hợp 74 Đề Thi Học Sinh Giỏi Tin Học THCS Cấp Tỉnh Có Đáp…
Tổng hợp 75 Đề thi HSG Tin học THCS Python Cấp Tỉnh (Có Code Giải…
6 Kinh nghiệm làm bài thi Học sinh giỏi Tin học Tỉnh 2026- 2027 &…
This website uses cookies.