Thẻ: De thi HSG Tin học THCS

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é!

  1. 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
  2. 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
  3. Giải đề 3 thi học sinh giỏi tin học lập trình Python có đáp án
  4. Giải đề 4 ôn thi học sinh giỏi Tin Học THCS lập trình Python có đáp án
  5. Giải đề 5 và đáp án thi HSG Tin Python có số Pell.
  6. Giải đề 6 và đáp án bồi dưỡng học sinh giỏi tin 10 có số Armstrong
  7. Giải đề 7 và đáp án  thi học sinh giỏi tin học 10 Python có số Collatz
  8. Giải đề 8 trong 20 đề Bồi dưỡng học sinh giỏi Tin học lớp 9 có số Kaprekar.
  9. Giải đề 9 thi HSG Tin học lớp 8 lập trình Python có số Happy
  10. Giải đề 10 thi tin học trẻ THPT có bài  In các xâu con trong xâu s.

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:

  1. Đề thi HSG Tin 9 tỉnh Nghệ An (Bảng A, B).

  2. Đề thi HSG Tin 9 tỉnh Thanh Hóa (Đầy đủ các năm).

  3. Đề thi chọn đội tuyển HSG lớp 9 TP. Hà Nội.

  4. Đề thi giao lưu học sinh giỏi các tỉnh đồng bằng Bắc Bộ.

  5. Đề 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]

tai ngay vi tính tấn dân

(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 ý:

  1. Đọc kỹ đề bài: Xác định rõ ràng Input, Output và các giới hạn (Constraints) của đề.

  2. 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.

  3. 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…).

  4. 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)

  • n hộ gia đình, mỗi hộ dùng aᵢ KWh điện.

  • Giá điện chia 3 bậc:

BậcSố KWhGiá
11 → 1002500 đ/KWh
2101 → 2003000 đ/KWh
3≥ 2013500 đ/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 * 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

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ự độ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


⏱️ 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 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

👉 Đị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:

  1. Số kí tự phân biệt trong xâu

    • Chính là số lượng kí tự khác nhau

  2. 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ư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


🧪 Kiểm tra bằng ví dụ đề bài

Ví dụ 1

STRONG.INP
xy11z2yyzxy0y
  • 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

Ví dụ 2

STRONG.INP
ggggg
  • 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 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}

👉 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ò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 btố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^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.


🧠 Tư duy giải (đúng mức THCS – không dùng suffix array)

|s| ≤ 1000, ta có thể dùng cách duyệt độ dài + kiểm tra trùng:

Ý tưởng:

  1. Duyệt độ dài xâu con L từ lớn xuống nhỏ

  2. Với mỗi L, duyệt tất cả các xâu con độ dài L

  3. Dùng set để kiểm tra:

    • Nếu một xâu con đã xuất hiện → tìm được đáp án

  4. 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 L từ n-11
    → đả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


🧪 Ví dụ minh họa

Ví dụ

SUBSTR.INP
abababa

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ả:

SUBSTR.OUT
ababa

⏱️ 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

  • 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).

👉 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é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ả


🧪 Kiểm tra ví dụ đề bài

Ví dụ 1

GIFT.INP
2 4 3 5 7 8 6

Đoạn tăng dài nhất:

3 5 7 8

👉 Độ dài = 4


Ví dụ 2

GIFT.INP
1 5 4 3 5 6 6 5 8 6

Đoạn tăng dài nhất:

3 5 6

👉 Độ 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

 

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.

 

 

73 Đề thi HSG Tin học Python THCS cấp tỉnh Tiền Giang có ĐÁP ÁN (Mới & Chọn Lọc)

Nếu bạn đang ôn thi học sinh giỏi Tin học THCS cấp tỉnh Tiền Giang, đặc biệt là thi lập trình Python, thì bài viết này sinh ra là dành cho bạn.

Trong bài này, Vi Tính Tân Dân đã tổng hợp 73 đề thi HSG Tin học Python THCS cấp tỉnh Tiền Giang, kèm đáp án – code giải chi tiết – giải thích thuật toán rõ ràng, bám sát đúng cấu trúc đề thi thực tế của Sở GD&ĐT Tiền Giang.

👉 Phù hợp cho:

  • Học sinh lớp 6 – 9 ôn thi HSG Tin học

  • Học sinh luyện thi vào lớp 10 chuyên Tin

  • Giáo viên, phụ huynh bồi dưỡng học sinh năng khiếu Tin học

 

73 Đề thi HSG Tin học Python THCS cấp tỉnh Tiền Giang 73 Đề thi HSG Tin học Python THCS cấp tỉnh Tiền Giang 73 Đề thi HSG Tin học Python THCS cấp tỉnh Tiền Giang

 


🎯 Vì sao nên luyện bộ 73 đề thi HSG Tin học Python THCS cấp tỉnh Tiền Giang này?

Không giống các bộ đề tràn lan trên mạng, bộ đề này được chọn lọc kỹ, đảm bảo:

Đúng chuẩn đề thi Tin học THCS cấp tỉnh Tiền Giang
✅ Ngôn ngữ Python – đúng yêu cầu thi thực tế
✅ Có đáp án + code mẫu
✅ Giải thích tư duy thuật toán, không chỉ cho code
✅ Từ dễ → trung bình → khó, giúp nâng trình rõ rệt

👉 Rất nhiều học sinh học Python nhưng không biết ra đề thi thật trông như thế nào. Bộ đề này giúp bạn làm quen đề chuẩn – tránh bỡ ngỡ khi đi thi.


📚 Nội dung chính trong 73 đề thi HSG Tin học Python THCS

Bộ đề bao phủ toàn bộ kiến thức trọng tâm thường ra trong các kỳ thi HSG Tin học cấp tỉnh:

🔹 1. Xử lý số & toán học trong Python

    1. Đọc số nguyên x từ file NUM.INP.
    2. Duyệt hai số a và b trong phạm vi [1, x], đảm bảo a ≤ b.
    3. Kiểm tra điều kiện a * b == x và a / b ≥ 0.5.
    4. Nếu tìm thấy cặp (a, b) thỏa mãn, gán la_ket_doi = 1 và dừng vòng lặp.
    5. Ghi kết quả 1 vào NUM.OUT nếu x là số kết đôi, ngược lại ghi 0.

🔹 2. Xử lý ngày tháng năm

    1. Đọc dữ liệu từ file CUP.INP, bao gồm:
      • Ngày hiện tại (định dạng dd.mm.yyyy).
      • Số ngày cần cộng thêm.
    2. Chuyển đổi ngày hiện tại thành kiểu datetime.
    3. Cộng thêm số ngày vào ngày hiện tại bằng timedelta(days=so_ngay_them).
    4. Xuất kết quả với định dạng dd.mm.yyyy ra file CUP.OUT.

🔹 3. Chuỗi ký tự (String)

    1. Đọc dữ liệu từ file PART.INP, gồm:
      • n, L, R: số phần tử của mảng và khoảng cần kiểm tra.
      • Mảng a chứa n số nguyên.
    2. Duyệt qua từng phần tử a[i] của mảng:
      • Xét các chỉ số j trong phạm vi [i+L, i+R].
      • Nếu a[i] == a[j] + a[j-1], tăng biến đếm và dừng kiểm tra tiếp theo.
    3. Xuất kết quả ra file PART.OUT.

🔹 4. Xử lý Xâu

  • Đọc dữ liệu từ file PW.INP:
    • Số nguyên n là số xâu.
    • n xâu ký tự chứa chỉ các chữ cái thường (a-z).

      Sắp xếp các xâu theo độ dài tăng dần.

      Duyệt từng xâu trong danh sách:

    • Kiểm tra xem xâu đó có chứa tất cả các xâu khác hay không.
    • Nếu có, in ra xâu đó và dừng lại.

      Nếu không có xâu nào phù hợp, in -1.

🔹 5. Thuật toán cơ bản – nâng cao

    1. Đọc dữ liệu từ COVID.INP:
      • n: số người trên đường.
      • a: danh sách tọa độ của n người.
    2. Sắp xếp danh sách tọa độ theo thứ tự tăng dần.
    3. Tính toán khoảng cách giữa các vị trí:
      • Khoảng cách nhỏ nhất giữa hai người gần nhau nhất.
      • Khoảng cách lớn nhất giữa người đầu và người cuối.
    4. Tính số nhóm nhiễm bệnh dựa trên khoảng cách:
      • Tối thiểu: nếu khoảng cách nhỏ nhất là d, thì nhóm nhiễm bệnh sẽ là (d // 2) + 1.
      • Tối đa: nếu khoảng cách lớn nhất là D, thì nhóm nhiễm bệnh sẽ là (D // 2) + 1.
    5. In kết quả.

🧠 Có gì trong phần ĐÁP ÁN & CODE GIẢI?

Điểm mạnh nhất của bộ tài liệu này là không chỉ có đáp án, mà còn:

✔️ Code Python rõ ràng – đúng chuẩn thi
✔️ Có import sys, đọc ghi file đúng format đề tỉnh
✔️ Giải thích từng bước tư duy
✔️ Phân tích độ phức tạp thuật toán
✔️ Chú thích bằng tiếng Việt dễ hiểu cho học sinh THCS

👉 Phù hợp cả với:

  • Học sinh tự học tại nhà

  • Giáo viên soạn tài liệu bồi dưỡng

  • Phụ huynh theo dõi quá trình học của con


🏆 Lợi ích khi luyện trọn bộ 73 đề này

📌 Nắm chắc cấu trúc đề thi HSG Tin học tỉnh Tiền Giang
📌 Tăng khả năng tư duy thuật toán – không học vẹt
📌 Làm quen cách trình bày code đúng chuẩn chấm thi
📌 Tự tin khi bước vào kỳ thi chính thức
📌 Rút ngắn rất nhiều thời gian ôn tập

👉 Rất nhiều học sinh từng đạt giải cấp huyện – cấp tỉnh đã luyện theo đúng dạng đề như trong bộ này.


👨‍🏫 Ai nên sử dụng bộ đề này?

✔️ Học sinh THCS yêu thích Tin học
✔️ Học sinh đang học Python để thi HSG
✔️ Học sinh ôn thi vào lớp 10 chuyên Tin
✔️ Giáo viên Tin học THCS
✔️ Trung tâm bồi dưỡng học sinh giỏi Tin học


🚀 Kết luận

Bộ 73 Đề thi HSG Tin học Python THCS cấp tỉnh Tiền Giang có ĐÁP ÁNtài liệu cực kỳ giá trị nếu bạn đang nghiêm túc theo đuổi con đường học sinh giỏi Tin học.

👉 Nếu bạn muốn:

  • Học đúng trọng tâm

  • Luyện đúng dạng đề

  • Hiểu bản chất thuật toán

👉 Đừng bỏ qua bộ đề này.

📌 Theo dõi vitinhtandan.com để cập nhật thêm:

  • Đề thi HSG Tin học mới

  • Code Python giải chi tiết

  • Tài liệu ôn thi chuyên Tin từ cơ bản đến nâng cao

ĐÁP ÁN CÂU 1: Số Kết Đôi

 

import sys

sys.stdin = open("NUM.INP", "r")
sys.stdout = open("NUM.OUT", "w")

# Doc so x
x = int(sys.stdin.readline().strip())

# Kiem tra so ket doi
la_ket_doi = 0
for a in range(1, x + 1):
    for b in range(a, x + 1):
        if a * b == x and a / b >= 0.5:
            la_ket_doi = 1
            break
    if la_ket_doi:
        break

# Ghi ket qua
print(la_ket_doi)

1️⃣ Ý tưởng thuật toán

Ta cần kiểm tra số nguyên dương x có tồn tại hai số nguyên dương a, b sao cho:

  • a×b=x

  • a≤b

  • a/b≥0.5

Nếu tồn tại ít nhất một cặp (a, b) thỏa mãn thì x là số kết đôi → in 1, ngược lại in 0.


2️⃣ Phân tích từng bước chương trình

🔹 Bước 1: Đọc dữ liệu

x = int(sys.stdin.readline().strip())

Đọc số nguyên dương x từ file NUM.INP.


🔹 Bước 2: Duyệt các cặp (a, b)

for a in range(1, x + 1):
for b in range(a, x + 1):
  • a chạy từ 1 đến x

  • b chạy từ a đến x → đảm bảo a ≤ b, tránh xét trùng cặp


🔹 Bước 3: Kiểm tra điều kiện số kết đôi

if a * b == x and a / b >= 0.5:
  • a * b == x → (a, b) là một cặp ước của x

  • a / b ≥ 0.5 → đúng điều kiện đề bài

👉 Nếu thỏa mãn:

  • Gán la_ket_doi = 1

  • Dừng vòng lặp ngay (không cần xét thêm)


🔹 Bước 4: Xuất kết quả

print(la_ket_doi)
  • In 1 nếu x là số kết đôi

  • In 0 nếu không tồn tại cặp nào thỏa


3️⃣ Độ phức tạp thuật toán

⏱️ Thời gian chạy

  • Vòng a: chạy tối đa x lần

  • Với mỗi a, vòng b: chạy tối đa x − a + 1 lần

👉 Trường hợp xấu nhất:

O(x^2)


💾 Bộ nhớ sử dụng

  • Chỉ dùng vài biến đơn giản (x, a, b, la_ket_doi)

  • Không dùng mảng hay cấu trúc phức tạp

👉 Độ phức tạp bộ nhớ:

O(1)


4️⃣ Nhận xét theo góc nhìn bài thi

✔️ Thuật toán:

  • Dễ hiểu

  • Dễ cài đặt

  • Phù hợp mức THCS – HSG cấp huyện/tỉnh

⚠️ Nhược điểm:

  • Với x lớn → chạy chậm do O(x²)

👉 Trong bài thi nâng cao, có thể tối ưu bằng cách chỉ duyệt đến √x, nhưng đáp án này hoàn toàn hợp lệ nếu đề không yêu cầu tối ưu.

ĐÁP ÁN CÂU 2: Word Cup

 

import sys
from datetime import datetime, timedelta

sys.stdin = open("CUP.INP", "r")
sys.stdout = open("CUP.OUT", "w")

# Doc du lieu
ngay_hien_tai = sys.stdin.readline().strip()
so_ngay_them = int(sys.stdin.readline().strip())

# Chuyen doi ngay thanh doi tuong datetime
ngay_hien_tai = datetime.strptime(ngay_hien_tai, "%d.%m.%Y")

# Cong them so ngay
ngay_tuong_lai = ngay_hien_tai + timedelta(days=so_ngay_them)

# In ket qua theo dinh dang dd.mm.yyyy
print(ngay_tuong_lai.strftime("%d.%m.%Y"))

1️⃣ Ý tưởng thuật toán

Bài toán yêu cầu:

  • Cho một ngày hiện tại (định dạng dd.mm.yyyy)

  • Cho số ngày cần cộng thêm

  • Tính và in ra ngày tương lai sau khi cộng số ngày đó

👉 Đây là bài toán xử lý ngày tháng, cần xét đúng:

  • Tháng có 28, 29, 30 hay 31 ngày

  • Năm nhuận

➡️ Ta sử dụng thư viện datetime của Python để xử lý chính xác và gọn nhẹ.


2️⃣ Phân tích từng bước chương trình

🔹 Bước 1: Đọc dữ liệu vào

ngay_hien_tai = sys.stdin.readline().strip()
so_ngay_them = int(sys.stdin.readline().strip())
  • ngay_hien_tai: chuỗi ngày theo dạng dd.mm.yyyy

  • so_ngay_them: số nguyên – số ngày cần cộng thêm


🔹 Bước 2: Chuyển chuỗi ngày sang kiểu datetime

ngay_hien_tai = datetime.strptime(ngay_hien_tai, "%d.%m.%Y")
  • strptime giúp chuyển chuỗi → đối tượng datetime

  • Định dạng %d.%m.%Y tương ứng:

    • %d: ngày

    • %m: tháng

    • %Y: năm

➡️ Sau bước này, Python hiểu đúng cấu trúc ngày tháng, kể cả năm nhuận.


🔹 Bước 3: Cộng thêm số ngày

ngay_tuong_lai = ngay_hien_tai + timedelta(days=so_ngay_them)
  • timedelta(days=so_ngay_them) biểu diễn khoảng thời gian cần cộng

  • Python tự động:

    • Chuyển tháng

    • Chuyển năm

    • Xử lý năm nhuận

➡️ Không cần tự viết kiểm tra ngày/tháng phức tạp.


🔹 Bước 4: In kết quả đúng định dạng

print(ngay_tuong_lai.strftime("%d.%m.%Y"))
  • strftime chuyển datetime → chuỗi

  • Định dạng đúng yêu cầu đề bài: dd.mm.yyyy


3️⃣ Độ phức tạp thuật toán

⏱️ Thời gian chạy

  • Đọc dữ liệu: O(1)

  • Chuyển đổi ngày: O(1)

  • Cộng ngày: O(1)

  • In kết quả: O(1)

👉 Tổng thời gian chạy:

O(1)


💾 Bộ nhớ sử dụng

  • Chỉ dùng vài biến kiểu đơn giản (datetime, int)

  • Không dùng mảng hay vòng lặp

👉 Độ phức tạp bộ nhớ:

O(1)


4️⃣ Nhận xét theo chuẩn bài thi

✔️ Ưu điểm:

  • Code ngắn gọn

  • Chính xác tuyệt đối (kể cả năm nhuận)

  • Tránh lỗi khi xử lý ngày/tháng

  • Rất phù hợp bài thi HSG THCS

⚠️ Lưu ý:

  • Cách làm này phụ thuộc thư viện datetime

  • Nếu đề cấm dùng thư viện, phải tự xử lý ngày tháng (phức tạp hơn)

ĐÁP ÁN CÂU 3: Phần Tử Điển Hình

 

import sys

sys.stdin = open("PART.INP", "r")
sys.stdout = open("PART.OUT", "w")

# Doc du lieu
n, L, R = map(int, sys.stdin.readline().split())
a = list(map(int, sys.stdin.readline().split()))

# Dem so phan tu dien hinh
dem = 0
for i in range(n):
    for j in range(i + L, min(i + R + 1, n)):  # Xet cac khoang tu L den R
        if a[i] == a[j] + a[j - 1]:
            dem += 1
            break  # Neu da la phan tu dien hinh thi khong xet tiep

# In ket qua
print(dem)

1️⃣ Ý tưởng thuật toán

Bài toán cho:

  • Số phần tử n

  • Hai số nguyên L, R

  • Mảng số nguyên a[0…n-1]

Một phần tử điển hình tại vị trí i là phần tử thỏa mãn:

∃ j sao cho i+L≤j≤i+R vaˋ a[i]=a[j]+a[j−1]\exists\ j \ \text{sao cho} \ i + L \le j \le i + R \ \text{và} \ a[i] = a[j] + a[j-1]

👉 Nhiệm vụ: đếm số phần tử điển hình trong mảng.


2️⃣ Phân tích từng bước chương trình

🔹 Bước 1: Đọc dữ liệu

n, L, R = map(int, sys.stdin.readline().split())
a = list(map(int, sys.stdin.readline().split()))
  • n: số phần tử của mảng

  • L, R: giới hạn khoảng xét

  • a: mảng gồm n số nguyên


🔹 Bước 2: Khởi tạo biến đếm

dem = 0

Biến dem dùng để đếm số phần tử điển hình.


🔹 Bước 3: Duyệt từng phần tử a[i]

for i in range(n):

Xét từng vị trí i trong mảng làm ứng viên phần tử điển hình.


🔹 Bước 4: Duyệt các chỉ số j phù hợp

for j in range(i + L, min(i + R + 1, n)):
  • j ≥ i + L

  • j ≤ i + R

  • j < n (tránh vượt chỉ số mảng)

👉 Đảm bảo đúng điều kiện đề bài.


🔹 Bước 5: Kiểm tra điều kiện điển hình

if a[i] == a[j] + a[j - 1]:

Nếu tồn tại ít nhất một j thỏa mãn thì:

  • a[i] là phần tử điển hình

  • Tăng biến đếm

  • Dừng vòng lặp j (không cần xét thêm)

dem += 1
break

🔹 Bước 6: In kết quả

print(dem)

In ra số lượng phần tử điển hình tìm được.


3️⃣ Độ phức tạp thuật toán

⏱️ Thời gian chạy

  • Vòng ngoài: chạy n lần

  • Vòng trong: tối đa R − L + 1 lần

👉 Trường hợp xấu nhất:

O(n×(R−L))\boxed{O(n \times (R – L))}

Nếu R − L gần n:

O(n2)


💾 Bộ nhớ sử dụng

  • Mảng a kích thước n

  • Một vài biến đơn giản

👉 Độ phức tạp bộ nhớ:

O(n)


4️⃣ Nhận xét theo chuẩn bài thi

✔️ Ưu điểm:

  • Code rõ ràng, dễ hiểu

  • Xử lý đúng yêu cầu đề bài

  • break giúp giảm thời gian chạy khi đã thỏa điều kiện

⚠️ Nhược điểm:

  • Với n lớn và R − L lớn → chương trình có thể chậm

  • Chưa tối ưu cho dữ liệu rất lớn

👉 Tuy nhiên, rất phù hợp với đề HSG THCS nếu không yêu cầu tối ưu cao.


5️⃣ Gợi ý nâng cao (không bắt buộc)

  • Có thể tối ưu bằng bảng băm (dict) để tra nhanh tổng a[j] + a[j-1]

  • Hoặc tiền xử lý các cặp tổng liên tiếp

ĐÁP ÁN CÂU 4: Đặt Lại Mật Khẩu

📌 Ví dụ trong đề

Input

2 4
abac
zbab

Một output hợp lệ

abab

✔ So với abac → khác 1 vị trí
✔ So với zbab → khác 1 vị trí


🎯 Ghi nhớ để đi thi

  • Đây là bài sinh – kiểm tra, không phải DP

  • Mẹo quan trọng: neo theo 1 xâu

  • Rất hay ra trong đề HSG / chuyên Tin

import sys
sys.stdin = open("PW.INP", "r")
sys.stdout = open("PW.OUT", "w")

# Đọc n và m
n, m = map(int, sys.stdin.readline().split())

# Đọc các xâu
S = [sys.stdin.readline().strip() for _ in range(n)]

# Xâu gốc
base = S[0]

# Hàm kiểm tra xâu P có hợp lệ không
def hop_le(P):
    for s in S:
        dem = 0
        for i in range(m):
            if s[i] != P[i]:
                dem += 1
                if dem > 1:
                    return False
    return True

# Thử xâu base trước
if hop_le(base):
    print(base)
    sys.exit()

# Thử thay đổi từng vị trí
for i in range(m):
    for c in range(ord('a'), ord('z') + 1):
        if chr(c) != base[i]:
            P = base[:i] + chr(c) + base[i+1:]
            if hop_le(P):
                print(P)
                sys.exit()

# Không có lời giải
print(-1)

🔍 Phân tích đề bài (hiểu cho đúng)

  • n xâu S1, S2, …, Sn

  • Mỗi xâu độ dài m (m ≤ 10)

  • Cần tìm xâu P độ dài m sao cho:

👉 Với mỗi xâu Si, số vị trí khác nhau giữa Si và P KHÔNG QUÁ 1
Tức là:

  • P giống hoàn toàn Si (0 vị trí khác) ✅

  • hoặc chỉ khác đúng 1 vị trí

  • nếu khác ≥ 2 vị trí ❌ (không hợp lệ)

📌 Nếu có nhiều xâu P thỏa → in bất kỳ
📌 Nếu không có → in -1


🧠 Ý tưởng giải (rất quan trọng)

Nhận xét mấu chốt

  • m rất nhỏ (≤ 10)

  • Ký tự chỉ từ 'a' đến 'z'

➡️ Ta thử sinh xâu P từ một xâu gốc (ví dụ S1) bằng cách:

  • Giữ nguyên S1

  • Hoặc đổi 1 vị trí của S1 sang chữ khác (a..z)

💡 Lý do:

  • Nếu tồn tại P hợp lệ, thì P phải giống ít nhất một xâu cho trước ở hầu hết vị trí

  • Thử từ S1 là đủ (kỹ thuật “neo” – rất hay ra thi)


🧪 Cách kiểm tra một xâu P có hợp lệ không

Với mỗi xâu Si:

  • Đếm số vị trí j sao cho Si[j] != P[j]

  • Nếu > 1 → P không hợp lệ

  • Nếu tất cả đều ≤ 1 → chấp nhận


🧩 Thuật toán

  1. Đọc n, m và danh sách xâu

  2. Lấy xâu gốc S0

  3. Tạo danh sách ứng viên P:

    • Chính S0

    • Với mỗi vị trí i:

      • Thử thay S0[i] bằng mọi chữ 'a'..'z'

  4. Với mỗi P:

    • Kiểm tra với tất cả Si

    • Nếu hợp lệ → in P và kết thúc

  5. Nếu hết mà không có → in -1


⏱ Độ phức tạp

  • Số ứng viên ≤ 1 + 26 * m ≈ 261

  • Mỗi ứng viên kiểm tra n * m

➡️ O(26 · m · n · m)
Với m ≤ 10 → chạy rất nhanh, an toàn thi tỉnh 👍

ĐÁP ÁN CÂU 5: Sự Lây Lan Covid-19

 

import sys

sys.stdin = open("COVID.INP", "r")
sys.stdout = open("COVID.OUT", "w")

# Doc du lieu
n = int(sys.stdin.readline().strip())
a = list(map(int, sys.stdin.readline().split()))

# Sap xep cac vi tri theo thu tu tang dan
a.sort()

# Tinh khoang cach giua cac vi tri va tim khoang cach nho nhat, lon nhat
min_dist = min(a[i + 1] - a[i] for i in range(n - 1))  # Khoang cach nho nhat giua hai nguoi
max_dist = a[-1] - a[0]  # Khoang cach xa nhat giua nguoi dau va nguoi cuoi

# So nhom nhiem benh toi thieu la 1, toi da la so nguoi vi tat ca deu cach xa nhau
print(min_dist // 2 + 1, max_dist // 2 + 1)

1️⃣ Ý tưởng thuật toán

Bài toán cho:

  • n: số người

  • Mảng a[]: vị trí của từng người trên một trục thẳng

Giả sử virus lây lan theo khoảng cách, mỗi người nhiễm có thể lây trong một phạm vi nhất định.
Ta cần xác định:

  • Số nhóm nhiễm tối thiểu

  • Số nhóm nhiễm tối đa

Dựa trên khoảng cách giữa các vị trí của những người.


2️⃣ Phân tích từng bước chương trình

🔹 Bước 1: Đọc dữ liệu

n = int(sys.stdin.readline().strip())
a = list(map(int, sys.stdin.readline().split()))
  • n: số người

  • a: danh sách vị trí của các người


🔹 Bước 2: Sắp xếp các vị trí

a.sort()
  • Đưa các vị trí về thứ tự tăng dần

  • Giúp việc tính khoảng cách giữa những người liền kề trở nên đơn giản


🔹 Bước 3: Tính khoảng cách nhỏ nhất và lớn nhất

min_dist = min(a[i + 1] - a[i] for i in range(n - 1))
  • Tính khoảng cách nhỏ nhất giữa hai người đứng gần nhau nhất

  • Đây là tình huống lây lan mạnh nhất → số nhóm ít nhất

max_dist = a[-1] - a[0]
  • Khoảng cách giữa người đứng đầu và người đứng cuối

  • Đây là tình huống lây lan yếu nhất → số nhóm nhiều nhất


🔹 Bước 4: Tính số nhóm nhiễm bệnh

print(min_dist // 2 + 1, max_dist // 2 + 1)

Giải thích công thức:

  • Mỗi nhóm lây lan chiếm bán kính 1 đơn vị về mỗi phía

  • Hai người cách nhau d sẽ tạo khoảng trống lây nhiễm là d // 2

  • Cộng thêm 1 là nhóm ban đầu

👉 In ra:

  • Số nhóm nhiễm tối thiểu

  • Số nhóm nhiễm tối đa


3️⃣ Độ phức tạp thuật toán

⏱️ Thời gian chạy

  • Sắp xếp mảng a:

O(nlog⁡n)O(n \log n)

  • Duyệt tính min_dist:

O(n)O(n)

👉 Tổng thời gian chạy:

O(nlog⁡n)\boxed{O(n \log n)}


💾 Bộ nhớ sử dụng

  • Lưu mảng a gồm n phần tử

  • Một vài biến đơn giản

👉 Độ phức tạp bộ nhớ:

O(n)\boxed{O(n)}


4️⃣ Nhận xét theo chuẩn bài thi

✔️ Ưu điểm:

  • Thuật toán đơn giản, hiệu quả

  • Không dùng vòng lặp lồng nhau

  • Chạy nhanh với n lớn

  • Rất phù hợp đề HSG THCS

✔️ Ý tưởng cốt lõi:

  • Chuyển bài toán lây lan → bài toán khoảng cách trên trục số

  • Chỉ cần xét khoảng cách nhỏ nhất và lớn nhất


5️⃣ Đánh giá tổng quát

Tiêu chíNhận xét
Độ đúng✅ Chính xác
Tốc độ⚡ Nhanh
Bộ nhớ💾 Thấp
Phù hợp thi🏆 Rất tốt

 

 

❓ CÂU HỎI THƯỜNG GẶP – 73 ĐỀ THI HSG TIN HỌC PYTHON THCS TIỀN GIANG


1. Bộ 73 đề thi HSG Tin học Python THCS cấp tỉnh Tiền Giang phù hợp cho lớp mấy?

Bộ 73 đề thi HSG Tin học Python THCS cấp tỉnh Tiền Giang phù hợp cho học sinh lớp 6, 7, 8 và 9, đặc biệt là học sinh đang ôn thi học sinh giỏi Tin học cấp huyện, cấp tỉnh và học sinh luyện thi vào lớp 10 chuyên Tin.


2. Các đề thi có đúng chuẩn cấu trúc đề thi tỉnh Tiền Giang không?

Có. Toàn bộ đề được chọn lọc và biên soạn dựa trên cấu trúc đề thi thực tế của Sở GD&ĐT Tiền Giang, đảm bảo sát đề thi thật, giúp học sinh không bị bỡ ngỡ khi đi thi.


3. Bộ đề có kèm đáp án và code Python chi tiết không?

Có đầy đủ. Mỗi đề đều có:

  • Đáp án chính xác

  • Code Python hoàn chỉnh

  • Giải thích tư duy thuật toán

  • Cách đọc – ghi file đúng chuẩn đề thi HSG Tin học THCS


4. Code Python trong bộ đề có phù hợp với bài thi chính thức không?

Hoàn toàn phù hợp. Code được viết theo chuẩn thi Tin học THCS, sử dụng:

  • import sys

  • Đọc dữ liệu từ file .INP

  • Ghi kết quả ra file .OUT
    Đúng với cách chấm bài trong các kỳ thi HSG cấp tỉnh.


5. Bộ đề này có phù hợp cho người mới học Python không?

Phù hợp nếu bạn đã nắm kiến thức Python cơ bản (biến, vòng lặp, điều kiện). Bộ đề được sắp xếp từ dễ → trung bình → nâng cao, giúp học sinh nâng trình từng bước, không bị quá tải.


6. Nội dung trong 73 đề thi gồm những dạng bài nào?

Bộ đề bao gồm:

  • Bài toán xử lý số, số nguyên tố

  • Mảng – danh sách – ma trận

  • Chuỗi ký tự

  • Bài toán tư duy thuật toán

  • Các dạng bài phân loại học sinh giỏi thường ra trong đề tỉnh


7. Giáo viên có thể dùng bộ đề này để bồi dưỡng học sinh không?

Rất phù hợp. Bộ đề là tài liệu chuẩn – đầy đủ – có lời giải chi tiết, giúp giáo viên:

  • Soạn bài bồi dưỡng HSG Tin học

  • Ra đề luyện tập

  • Hướng dẫn học sinh tư duy thuật toán đúng hướng

 

8. Luyện trọn bộ 73 đề này mang lại lợi ích gì?

Luyện đủ bộ đề giúp học sinh:

  • Nắm chắc dạng đề HSG Tin học Python THCS

  • Cải thiện tốc độ và độ chính xác khi làm bài

  • Hiểu rõ bản chất thuật toán

  • Tăng cơ hội đạt giải cấp huyện – cấp tỉnh


9. Bộ đề có cập nhật mới không?

Có. Bộ đề được chọn lọc và cập nhật, phù hợp với xu hướng ra đề mới, đúng yêu cầu Python trong chương trình THCS hiện nay.


10. Nên luyện bộ đề này như thế nào để đạt hiệu quả cao nhất?

Cách học hiệu quả nhất:
1️⃣ Làm đề không xem đáp án trước
2️⃣ Tự code và chạy thử
3️⃣ So sánh với code mẫu & cách tối ưu
4️⃣ Ghi chú lại dạng bài hay sai
5️⃣ Luyện lại sau 1–2 tuần

 

74 Đề thi học sinh giỏi Tin học THCS cấp Tỉnh Có ĐÁP ÁN 2026-2027

Tổng Hợp 74 Đề Thi Học Sinh Giỏi Tin Học THCS Cấp Tỉnh Có Đáp Án (Năm Học 2026-2027)

Kỳ thi chọn học sinh giỏi Tin học cấp THCS (đặc biệt là lớp 9) luôn là một thử thách lớn đòi hỏi sự chuẩn bị kỹ lưỡng về tư duy thuật toán và kỹ năng lập trình. Để đồng hành cùng các thầy cô giáo và các em học sinh, Vi Tính Tấn Dân xin chia sẻ bộ tài liệu “74 Đề thi học sinh giỏi Tin học THCS cấp tỉnh có đáp án” được cập nhật mới nhất cho năm học 2026-2027.

Đây là nguồn tài liệu quý giá giúp các em làm quen với cấu trúc đề thi, rèn luyện kỹ năng giải thuật trên các ngôn ngữ phổ biến như C++, Python và Pascal.

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é!

    1. 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
    2. 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
    3. Giải đề 3 thi học sinh giỏi tin học lập trình Python có đáp án
    4. Giải đề 4 ôn thi học sinh giỏi Tin Học THCS lập trình Python có đáp án
    5. Giải đề 5 và đáp án thi HSG Tin Python có số Pell.
    6. Giải đề 6 và đáp án bồi dưỡng học sinh giỏi tin 10 có số Armstrong
    7. Giải đề 7 và đáp án  thi học sinh giỏi tin học 10 Python có số Collatz
    8. Giải đề 8 trong 20 đề Bồi dưỡng học sinh giỏi Tin học lớp 9 có số Kaprekar.
    9. Giải đề 9 thi HSG Tin học lớp 8 lập trình Python có số Happy
    10. Giải đề 10 thi tin học trẻ THPT có bài  In các xâu con trong xâu s.
    11. Đề thi hsg tin 11 python có đáp án hay nhất 2024
    12. 12 đề và đáp án thi HSG tin Python có sắp xếp
    13. Đề 13 thi học sinh giỏi Tin học THCS có đáp án hay nhất năm 2024.
    14. 14 đề bồi dưỡng học sinh giỏi tin học lớp 7, 8, 9 THCS mới nhất !
    15. 15 Đề thi học sinh giỏi Tin học lớp 9 cấp huyện hay nhất 2024 – 2025
    16. 16 Đề bài tập Python có lời giải PDF thi HSG cấp huyện mới nhất
    17. 17 đề thi tin học trẻ có Đáp Án python THCS cấp huyện PDF
    18. 18 Đề thi học sinh giỏi Tin học THCS có đáp ÁN dễ học nhất năm 2025
    19. 19 thi HSG Tin 9 C ++ hoặc Python có đáp án
    20. 100 đề và đáp án thi HSG tin Python cấp huyện 2025

1. Tại sao bạn nên tải bộ 74 đề thi HSG Tin học này?

Khác với các tài liệu trôi nổi trên mạng, bộ sưu tập 74 đề thi này được Vi Tính Tấn Dân tổng hợp và chọn lọc kỹ càng từ các kỳ thi chính thức của nhiều tỉnh thành trên cả nước trong những năm gần đây.

  • Số lượng lớn: Với 74 đề thi, học sinh có thể thoả sức luyện tập từ cơ bản đến nâng cao.

  • Có đáp án chi tiết: Tất cả các đề đều đi kèm Test case (Input/Output) chuẩn và Code mẫu (Solution) giúp học sinh dễ dàng đối chiếu kết quả.

  • Cập nhật xu hướng mới: Đề thi bám sát cấu trúc ra đề của Bộ GD&ĐT và các Sở GD&ĐT trong giai đoạn 2025-2027, tập trung mạnh vào tư duy thuật toán thay vì chỉ cú pháp ngôn ngữ.

2. Cấu trúc đề thi học sinh giỏi Tin học THCS năm 2026-2027 có gì mới?

Theo xu hướng chuyển đổi số và đổi mới giáo dục, đề thi HSG Tin học cấp tỉnh hiện nay thường có cấu trúc như sau:

  • Thời gian làm bài: 150 phút.

  • Hình thức: Thi lập trình trên máy tính (chấm tự động bằng các phần mềm như Themis, CMS…).

  • Ngôn ngữ lập trình: Cho phép sử dụng C++ (phổ biến nhất), Python (xu hướng mới) và Free Pascal.

Các dạng bài tập thường gặp:

  1. Bài toán số học: Tìm số nguyên tố, ước số, số hoàn hảo, xử lý số lớn…

  2. Xử lý mảng và chuỗi: Sắp xếp, tìm kiếm, thao tác trên xâu ký tự.

  3. Thuật toán & Quy hoạch động: Các bài toán tối ưu, bài toán cái túi, dãy con tăng dài nhất…

  4. Hình học & Tổ hợp: Tính diện tích, đếm số phương án…

3. Review nội dung bộ đề thi

Dưới đây là tóm tắt nội dung của một số đề thi tiêu biểu có trong bộ tài liệu này:

Đề số 01: Đề thi HSG Tin học Tỉnh Tiền Giang (Năm 2021- 2022)

  • Bài 1 (4 điểm): Tìm số nguyên tố đầy đủ?

  • Bài 2 (4 điểm): Tìm Mật Mã (Mảng 1 chiều + Thuật toán đếm)?

  • Bài 3 (4 điểm): Bài toán Ma Trận?

  • Bài 4 (4 điểm): Về hình học Tính Tam Giác?

  • Bài 5 (4 điểm): Tính Lãi Kép Ngân Hàng?

(Tất cả đều có code giải tham khảo bằng C++ và Python)

4. Hướng dẫn ôn thi hiệu quả với bộ tài liệu này

Để đạt kết quả cao nhất trong kỳ thi cấp tỉnh, các em học sinh nên tuân thủ lộ trình sau:

  1. Giai đoạn 1: Tải bộ đề về và phân loại theo độ khó.

  2. Giai đoạn 2: Tự bấm giờ làm bài giống như thi thật (không xem đáp án trước).

  3. Giai đoạn 3: So sánh kết quả với bộ Test case.

  4. Giai đoạn 4: Tham khảo Code mẫu để học hỏi cách viết code tối ưu, ngắn gọn và “sạch” hơn.

5. Tải xuống 74 Đề thi học sinh giỏi Tin học THCS cấp tỉnh (Full Code)

Các thầy cô và các em học sinh có thể tải trọn bộ tài liệu tại liên kết bên dưới. File nén bao gồm: File đề bài (PDF/Word), Bộ Test (Input/Output), và Code giải (CPP/PY/PAS).

Tải đề Thi Đề thi HSG Tin học THCS Python Cấp Tỉnh file PDF:

Tải bằng google driver


Lời kết

Hy vọng bộ tài liệu 74 đề thi học sinh giỏi Tin học THCS cấp tỉnh có đáp án 2026-2027 này sẽ là hành trang vững chắc giúp các em học sinh tự tin bước vào phòng thi và gặt hái giải cao.

Đừng quên ghé thăm Vi Tính Tấn Dân thường xuyên để cập nhật thêm nhiều tài liệu công nghệ, thủ thuật máy tính và đề thi mới nhất nhé!

Đáp Án Bài 1: Số Nguyên Tố Đầy Đủ

import sys
import math

# MỞ FILE VÀO / RA (đúng chuẩn thi)
sys.stdin = open("FULLPRIM.INP", "r")
sys.stdout = open("FULLPRIM.OUT", "w")


# Hàm kiểm tra số nguyên tố
def la_so_nguyen_to(so):
    if so < 2:
        return False
    if so == 2:
        return True
    if so % 2 == 0:
        return False

    can_bac_hai = int(math.sqrt(so))
    for uoc in range(3, can_bac_hai + 1, 2):
        if so % uoc == 0:
            return False
    return True


# ===== CHƯƠNG TRÌNH CHÍNH =====

# Nhập số lượng phần tử
so_luong = int(input())

# Nhập dãy số
day_so = list(map(int, input().split()))

ket_qua = []

# Duyệt từng số trong dãy
for so in day_so:
    if la_so_nguyen_to(so):
        so_dao = int(str(so)[::-1])
        if la_so_nguyen_to(so_dao):
            ket_qua.append(str(so))

# Xuất kết quả
if len(ket_qua) == 0:
    print(0)
else:
    print(" ".join(ket_qua))

🧠 Giải thích ngắn gọn cách làm

  1. Viết hàm la_so_nguyen_to() để kiểm tra số nguyên tố

  2. Với mỗi số trong dãy:

    • Kiểm tra số đó có nguyên tố không

    • Đảo ngược số

    • Kiểm tra số đảo có nguyên tố không

  3. Nếu cả hai đều nguyên tố → là số nguyên tố đẩy đủ

  4. In ra danh sách kết quả, nếu không có in 0


⏱️ Độ phức tạp

  • Kiểm tra 1 số nguyên tố: O(√n)

  • Tổng:

O(N × √max)
  • Bộ nhớ: O(1)

 

Đáp Án Bài 2: Mật Mã:

 

 

# SECRCODE.py
import sys
sys.stdin = open("SECRCODE.INP", "r")
sys.stdout = open("SECRCODE.OUT", "w")

xau = sys.stdin.read().strip()

# Mảng đếm số lần xuất hiện của các chữ cái a -> z
dem = [0] * 26

# Đếm ký tự
for ky_tu in xau:
    vi_tri = ord(ky_tu) - ord('a')
    dem[vi_tri] += 1
# Tạo mã bản quyền
ket_qua = ""
for i in range(26):
    if dem[i] > 0:
        ket_qua += str(dem[i])
print(ket_qua)

🔹 Phân tích bài toán

  • Đề bài cho một xâu ký tự thường a–z

  • Cần:

    1. Đếm số lần xuất hiện của từng chữ cái

    2. Theo thứ tự alphabet a → z

    3. Nếu chữ cái xuất hiện (đếm > 0) thì ghi số lần xuất hiện vào mã

  • Các số được nối liền nhau, không có dấu cách


🔹 Ví dụ phân tích

Xâu:

bcddaagfxybbbccccdeeezyyzzz
Ký tựSố lần
a2
b4
c6
d3
e5
f1
x3
y3
z4

👉 Mã bản quyền: 246351334


🔹 Ý tưởng giải

  • Dùng mảng đếm 26 phần tử, mỗi phần tử tương ứng một chữ cái

  • Duyệt xâu:

    • Mỗi ký tự → tăng biến đếm tương ứng

  • Duyệt mảng từ a đến z:

    • Nếu số đếm > 0 → nối vào kết quả


🔹 Độ phức tạp

  • Thời gian: O(n) (n là độ dài xâu)

  • Bộ nhớ: O(1) (chỉ dùng mảng 26 phần tử)

 

Đáp án bài 3: Chọn Phần Thưởng

 

# BONUSSEL.py
import sys
import math

sys.stdin = open("BONUSSEL.INP", "r")
sys.stdout = open("BONUSSEL.OUT", "w")

m, n = map(int, sys.stdin.readline().split())

tong = 0

for _ in range(m):
    dong = list(map(int, sys.stdin.readline().split()))
    for gia_tri in dong:
        can = int(math.isqrt(gia_tri))
        if can * can == gia_tri:
            tong += gia_tri

print(tong)

🔹 Phân tích bài toán

  • Cho bảng số nguyên dương kích thước m × n

  • Yêu cầu:

    • Tìm tất cả các số chính phương

    • Tính tổng các số đó


🔹 Số chính phương là gì?

Một số x là số chính phương nếu:

x = k² (k là số tự nhiên)

👉 Cách kiểm tra nhanh:

k = int(sqrt(x))
nếu k * k == xx là số chính phương

🔹 Ý tưởng giải

  • Đọc m, n

  • Duyệt từng phần tử trong bảng

  • Với mỗi số:

    • Tính căn bậc hai nguyên

    • Nếu bình phương lại bằng chính nó → cộng vào tổng


🔹 Độ phức tạp

  • Thời gian: O(m × n)

  • Bộ nhớ: O(1)

✅ Ghi nhớ khi đi thi

✔ Dùng math.isqrt() chính xác – nhanh – an toàn
✔ Biến đặt rõ nghĩa
✔ Không in thừa dòng, thừa khoảng trắng

Đáp án bài 4: Tam Giác

# TRIANGLE.py
import sys
sys.stdin = open("TRIANGLE.INP", "r")
sys.stdout = open("TRIANGLE.OUT", "w")

def binh_phuong_khoang_cach(x1, y1, x2, y2):
    return (x2 - x1) ** 2 + (y2 - y1) ** 2

T = int(sys.stdin.readline())

for _ in range(T):
    xa, ya, xb, yb, xc, yc = map(float, sys.stdin.readline().split())

    # Kiểm tra 3 điểm có thẳng hàng không
    dien_tich = (xb - xa) * (yc - ya) - (xc - xa) * (yb - ya)
    if dien_tich == 0:
        print("NO")
        continue

    # Tính bình phương độ dài các cạnh
    AB2 = binh_phuong_khoang_cach(xa, ya, xb, yb)
    BC2 = binh_phuong_khoang_cach(xb, yb, xc, yc)
    CA2 = binh_phuong_khoang_cach(xc, yc, xa, ya)

    # Kiểm tra định lý Pitago
    if (abs(AB2 + BC2 - CA2) < 1e-9 or
        abs(AB2 + CA2 - BC2) < 1e-9 or
        abs(BC2 + CA2 - AB2) < 1e-9):
        print("YES")
    else:
        print("NO")

🔹 Phân tích đề bài

Cho T bộ dữ liệu, mỗi bộ gồm tọa độ 3 điểm A, B, C trong mặt phẳng OXY.

Yêu cầu:
👉 Kiểm tra 3 điểm có tạo thành TAM GIÁC VUÔNG hay không

In:

  • "YES" nếu là tam giác vuông

  • "NO" nếu không phải


🔹 Điều kiện toán học

1️⃣ Ba điểm tạo thành tam giác

Ba điểm không thẳng hàng
Diện tích tam giác ≠ 0

👉 Kiểm tra bằng tích có hướng:

(xB - xA)(yC - yA) - (xC - xA)(yB - yA) ≠ 0

2️⃣ Tam giác vuông (định lý Pitago)

  • Gọi:
  • AB², BC², CA² là bình phương độ dài các cạnh

  • Tam giác vuông nếu:
  • AB² + AC² = BC²
    hoặc
    AB² + BC² = AC²
    hoặc
    AC² + BC² = AB²
  • ⚠️ KHÔNG lấy căn để tránh sai số số thực (đề đã nhắc)

🔹 Công thức bình phương khoảng cách

Với A(x₁, y₁), B(x₂, y₂):

AB² = (x₂ - x₁)² + (y₂ - y₁)²

🔹 Ý tưởng giải

Với mỗi bộ test:

  1. Đọc tọa độ A, B, C

  2. Kiểm tra có tạo thành tam giác

  3. Tính AB², BC², CA²

  4. Kiểm tra định lý Pitago

  5. In kết quả


🔹 Độ phức tạp

  • Mỗi test: O(1)

  • Tổng: O(T)
    → Chạy rất nhanh

 

✅ Giải thích điểm quan trọng (rất hay bị sai)

  • ⚠️ KHÔNG dùng sqrt()
    ⚠️ So sánh số thực phải dùng sai số nhỏ (1e-9)
    ⚠️ Phải kiểm tra tạo thành tam giác trước

📌 Mẹo ăn điểm khi thi

  • ✔ Dùng bình phương độ dài
    ✔ So sánh bằng abs(a-b) < 1e-9
    ✔ In đúng "YES" / "NO" (IN HOA)

1. Bản chất của đoạn code

Đoạn code này dùng để kiểm tra xem một tam giác có phải là tam giác vuông hay không dựa trên Định lý Pitago đảo.

  • Định lý: Nếu tổng bình phương hai cạnh bằng bình phương cạnh còn lại ($a^2 + b^2 = c^2$) thì đó là tam giác vuông.

  • Vì chúng ta không biết cạnh nào là cạnh huyền, nên phải kiểm tra cả 3 trường hợp:

    1. AB^2 + BC^2 = CA^2 (Vuông tại B)

    2. AB^2 + CA^2 = BC^2 (Vuông tại A)

    3. BC^2 + CA^2 = AB^2 (Vuông tại C)


2. Tại sao phải dùng abs(...) < 1e-9 mà không dùng dấu ==?

Đây là kiến thức “sống còn” cho học sinh khi thi HSG Tin học.

  • Vấn đề sai số: Trong máy tính, các số thực (kiểu float) được lưu dưới dạng nhị phân nên thường xảy ra sai số nhỏ.

    • Ví dụ: Kết quả lẽ ra là 25.0 nhưng máy tính có thể lưu là 24.99999999999999.

    • Nếu ta dùng if AB2 + BC2 == CA2:, máy sẽ trả về False (Sai), dẫn đến mất điểm oan.

  • Giải pháp: Thay vì so sánh bằng nhau tuyệt đối, ta kiểm tra xem hiệu của hai vế có đủ nhỏ hay không.

    • abs(AB2 + BC2 - CA2) là trị tuyệt đối của hiệu hai vế.

    • 1e-9 (tức là 10^{-9} hay 0.000000001) được gọi là sai số cho phép (epsilon).

Kết luận: Nếu hiệu của hai vế nhỏ hơn 10^{-9}, ta coi như chúng bằng nhau.


3. Cách giải thích cho học sinh (Ngôn ngữ của Thầy Dân)

Thầy có thể dạy các em như thế này:

  1. Bước 1: Tính bình phương độ dài 3 cạnh (gọi là AB2, BC2, CA2).

  2. Bước 2: Áp dụng Pitago đảo. Nhưng nhớ là trong lập trình, “bằng nhau” với số thực rất mong manh.

  3. Bước 3: Sử dụng “khoảng cách an toàn”. Nếu hai vế chỉ lệch nhau một tí xíu không đáng kể (< 1e-9) thì máy tính chấp nhận đó là tam giác vuông.


4. Code viết lại cho chuyên nghiệp

Các em có thể đưa đoạn này vào chuyên đề Hình học:

# Giả sử đã tính xong bình phương các cạnh AB2, BC2, CA2
sai_so = 1e-9 # Epsilon

# Kiểm tra từng trường hợp vuông tại A, B, hoặc C
vuong_tai_B = abs(AB2 + BC2 - CA2) < sai_so
vuong_tai_A = abs(AB2 + CA2 - BC2) < sai_so
vuong_tai_C = abs(BC2 + CA2 - AB2) < sai_so

if vuong_tai_A or vuong_tai_B or vuong_tai_C:
    print("YES") # Là tam giác vuông
else:
    print("NO")

Đáp án bài 5: Lãi Kép Ngân Hàng:

# COMPINT.py
import sys
sys.stdin = open("COMPINT.INP", "r")
sys.stdout = open("COMPINT.OUT", "w")

T = int(sys.stdin.readline())

for _ in range(T):
    M, r, n = map(float, sys.stdin.readline().split())
    n = int(n)

    tong_tien = M

    # Tính lãi kép qua từng tháng
    for _ in range(n):
        tong_tien = tong_tien + tong_tien * r / 100

    # In kết quả với 1 chữ số thập phân
    print(f"{tong_tien:.1f}")

🔹 Phân tích đề bài

  • T khoản gửi tiết kiệm

  • Mỗi khoản gồm:

    • M: tiền vốn ban đầu

    • r: lãi suất % mỗi tháng

    • n: số tháng gửi

  • Hình thức: LÃI KÉP

    • Tiền lãi của tháng trước được cộng vào vốn để tính lãi cho tháng sau

👉 Yêu cầu:
Tính tổng số tiền nhận được sau n tháng, in ra 1 chữ số thập phân


🔹 Công thức lãi kép theo tháng

Sau mỗi tháng:

T = T + T * r / 100

Tương đương:

T = T * (1 + r/100)

Lặp lại n lần


🔹 Ví dụ phân tích (đề bài)

Gửi:

M = 1 000 000
r = 0.7 (%)
n = 3
  • Tháng 1:
    T1 = 1000000 * 1.007 = 1007000

  • Tháng 2:
    T2 = 1007000 * 1.007 = 1014049

  • Tháng 3:
    T3 = 1014049 * 1.007 = 1021147.3


🔹 Ý tưởng giải

  • Đọc số bộ test T

  • Với mỗi bộ:

    • Gán tong_tien = M

    • Lặp n tháng:

      • tong_tien *= (1 + r/100)

  • In kết quả định dạng 1 chữ số thập phân


🔹 Độ phức tạp

  • Mỗi test: O(n) (n ≤ 500)

  • Tổng: O(T × n) → chạy rất nhanh


⚠️ Lưu ý quan trọng khi thi

Dùng số thực (float)
Không làm tròn sớm
✔ Chỉ làm tròn khi in kết quả
✔ In đúng 1 chữ số thập phân

🧠 Vì sao KHÔNG dùng công thức mũ?

Có thể dùng:

T = M * (1 + r/100)^n

❌ Nhưng dễ sai số số thực
✅ Vòng lặp an toàn hơn – đúng tinh thần đề THCS


📌 Tóm tắt nhanh

Nội dungGhi nhớ
Loại lãiLãi kép
Công thứcNhân dồn từng tháng
Output1 chữ số thập phân
Sai lầm hay gặpLàm tròn sớm

 

 

50 Đề thi học sinh giỏi Tin Học trên cả nước Việt Nam

Đề 1:  Đề THCS – Bà Rịa Vũng Tàu 2022 – 2023

Đề 2 thi học sinh giỏi lớp 9 môn Tin học – Tỉnh Bình Định năm 2022

50 Đề thi học sinh giỏi Tin học trên cả nước Việt Nam (Có đáp án và lời giải chi tiết)

Cập nhật mới nhất 2025:
Tổng hợp 50 đề thi học sinh giỏi môn Tin học lớp 9 và THCS của các tỉnh, thành phố trên cả nước Việt Nam, kèm lời giải chi tiết bằng Python hoặc Pascal. Bộ sưu tập này giúp học sinh ôn luyện toàn diện, chuẩn bị tốt nhất cho kỳ thi HSG cấp huyện, cấp tỉnh và thi vào lớp 10 chuyên Tin.


1. Giới thiệu bộ 50 đề thi Tin học trên cả nước

Môn Tin học là môn học đòi hỏi tư duy logic, kỹ năng lập trình và khả năng giải quyết vấn đề.
Bộ “50 Đề thi học sinh giỏi Tin học trên cả nước Việt Nam” được tổng hợp từ nhiều năm của các tỉnh như:
Hà Nội, TP. Hồ Chí Minh, Bình Định, Tiền Giang, Nghệ An, Đà Nẵng, Hải Phòng, Lâm Đồng, Cần Thơ, Thái Bình, Nam Định, Đồng Tháp,…

Mỗi đề đều gồm 5 bài lập trình, được sắp xếp từ dễ đến khó, giúp học sinh:

  • Ôn tập cấu trúc ngôn ngữ (Python hoặc Pascal)

  • Củng cố kỹ năng thuật toán cơ bản

  • Phát triển khả năng tư duy giải quyết bài toán thực tế


2. Nội dung và dạng bài thường gặp trong các đề thi

Sau khi tổng hợp 50 đề thi, có thể chia các dạng bài Tin học học sinh giỏi phổ biến như sau:

Dạng 1: Xử lý mảng 1 chiều

  • Tìm số lớn nhất, nhỏ nhất, tổng, trung bình, phần tử thỏa điều kiện.

  • Sắp xếp, đếm, lọc phần tử.
    Rèn kỹ năng duyệt mảng, sử dụng vòng lặp và điều kiện.

Dạng 2: Ma trận (mảng 2 chiều)

  • Tính tổng hàng, cột, đường chéo.

  • Xoay ma trận, phản chiếu, tìm phần tử đặc biệt.
    Kiểm tra khả năng làm việc với cấu trúc dữ liệu hai chiều.

Dạng 3: Xử lý chuỗi ký tự

  • Đếm từ, tách chữ, đếm nguyên âm – phụ âm.

  • Loại bỏ ký tự, viết hoa chữ cái đầu, so sánh chuỗi.
    Củng cố kỹ năng làm việc với string trong Python.

⚙️ Dạng 4: Thuật toán và quy hoạch động (Dynamic Programming)

  • Bài toán con ếch, chia kẹo, dãy con tăng dài nhất, ba lô,…
    Đòi hỏi tư duy phân tích và tối ưu thuật toán.

Dạng 5: Đồ thị và đường đi ngắn nhất

  • Duyệt đồ thị bằng DFS, BFS, tìm cây khung nhỏ nhất (Prim, Kruskal), hoặc đường đi ngắn nhất (Dijkstra, Floyd).
    Đây là phần khó, thường xuất hiện ở đề cấp tỉnh và chuyên Tin.


3. Lợi ích khi luyện 50 đề thi Tin học HSG

Học sinh khi luyện bộ đề này sẽ đạt được nhiều kỹ năng quan trọng:

Nắm chắc cấu trúc lập trình cơ bản: vòng lặp, điều kiện, hàm, mảng, chuỗi.
Hiểu rõ tư duy thuật toán: cách phân tích đề, chia bài toán nhỏ, tìm hướng tối ưu.
Làm quen với phong cách ra đề của các tỉnh – chuẩn bị tốt cho kỳ thi thật.
Tăng tốc độ lập trình và tư duy khi viết code.

Kết luận

Bộ 50 Đề thi học sinh giỏi Tin học trên cả nước Việt Nam là tài liệu không thể thiếu cho những ai đam mê lập trình và mong muốn đạt giải cao trong các kỳ thi học sinh giỏi.
Mỗi đề là một thử thách thú vị, giúp bạn nâng cao tư duy thuật toán, khả năng lập trình và tốc độ xử lý vấn đề.

Hãy tải về, luyện tập hằng ngày và chinh phục ước mơ trở thành học sinh chuyên Tin giỏi nhất!

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

 

Khóa học Python online từ cơ bản đến nâng cao

  • Hotline: 093.717.9278 ( Gặp Tấn Dân Cử Nhân Công Nghệ Thông Tin)

 

18 Đề thi học sinh giỏi Tin học THCS có đáp ÁN dễ học nhất 2025

Mến chào các em yêu thích môn lập trình Python! Để các em có thể chuẩn bị tốt cho kỳ thi học sinh giỏi cấp huyện sắp tới Thầy đã Tuyển tập Bộ đề thi học sinh giỏi trung học phổ thông môn Tin học. Trong đó có 18 Đề thi học sinh giỏi Tin học THCS có đáp ÁN dễ học nhất năm 2025 để các em có thể dễ dàng ôn luyện để có thể dễ dàng thi đậu kỳ thi học sinh giỏi tin học cấp huyện sắp tới ! Chúc các em thành công !

Đây đã là đề thi số 18 Đề thi học sinh giỏi Tin học THCS có đáp án 

Các đề thi ở cấp huyện cần luyện tập nâng cao:

  1. Tự học Python từ cơ bản đến nâng cao đến giải đề thi nhé có tài liệu pdf tải về học

nguồn: 300bàicode.vn

Giải ngay đề 18 thi học sinh giỏi Tin học THCS có đáp ÁN dễ học nhất năm 2025 !

Thứ tựTên bàiFile

chương

trình

File dữ liệu

vào

File kết quả
Bài 1Phân loại nguy cơ nhiễm CovidD191.*D191.INPD191.OUT
Bài 2ln số đảo ngược của các số nguyên từ m đến nD192.*D192.INPD192.OUT
Bài 3In các số có tổng chữ số là số chính phương trong mảngD193.*D193.INPD193.OUT
Bài 4Đếm số lần xuất hiện của một từ trong xâuD194.*D194.INPD194.OUT
Bài 5Tách các thành phần trong số điện thoại bànD195.*D195.INPD195.OUT

Bài 1: (4 điểm) Phân Loại nguy cơ nhiễm Covid ?

  • Diễn giải: 
    • Để đánh giá nguy cơ dịch COVID-19, người ta dựa vào số lượng F0 được phát hiện hàng tuần trong cộng đồng.
    • Nhập vào số lượng F0 mới được phát hiện dương một xã (thị trấn) là một số nguyên n (0 < n < 105), hãy trả lời mức độ theo qui ước:
    • Nguy cơ thấp: 0 < n < 20
    • Nguy cơ trung bình: 20 <=n <50
    • Nguy cơ rất cao: 150 <=n
  • Input: Một số nguyên có giá trị từ 0 đến 10 mũ 5 cho biết giá trị của n.
  • Ouput: Kết quả theo mô tả trên.
  • Ví dụ:

 INPUT

OUTPUT

21Nguy co trung binh
63Nguy co cao

Bài 2: (4 điểm) In sổ đảo ngược của các số nguyên từ m đến n ?

  • Diễn giải:
    • Nhập vào hai số nguyên m và n (m<=n).
    • In số đảo ngược của các số nguyên từ m đến n.
  • Input: Hai số nguyên dương m và n (0<m, n<10 mũ 5 ), trên một dòng, cách nhau bởi dấu cách.
  • Output: Số đảo ngược của các số nguyên theo thứ tự từ m đến n, các số cách nhau một dấu cách.
  • Ví dụ:
InputOutput
11 1511 21 31 41 51
2 132 3 4 5 6 7 8 9 1 11 21 31

Bài 3: (4 điểm) In các số có tổng chữ số là số chính phương trong mảng ?

  • Diễn giải:
    • Nhập vào một mảng a có n số nguyên: a0, a1, a2, …..an. In các số có tổng chữ số  số chính phương trong mảng theo thứ tự xuất hiện.
  • Input: Dòng một là số nguyên n (0<n<106), n dòng tiếp theo là n sổ nguyên có giá trị tuyệt đối không vượt quá 10s.
  • Output:
    • Các có tổng chữ sổ là số chính phương trong mảng trên cùng một dòng, theo thứ tự xuất hiện, cách nhau bới dấu cách.
    • Nếu không có sổ có tổng chữ số là số chính phương nào trong mảng thì in dấu “-“
  • Ví dụ:

Input

Output

718 97 10 -31
18
61
97
8
10
17
-31

 

572 81 0 22
72
3
81
0
22

 

Bài 4: (4 điểm) Đếm số lần xuất hiện của một từ trong xâu ?

  • Diễn giải:
    • Nhập vào một xâu s và một từ X.
    • Đếm số lần xuất hiện của X trong xâu s
  • Input:
    • Xâu s trên dòng một, có độ dài không vượt quá 105, chứa các ký tự là chữ cái, chữ số, ký hiệu và các dấu cách.
    • Xâu X trên dòng hai là một từ chứa chữ cái với độ dài không vượt quá 10 mũ 2
  • Output: Số lần xuất hiện của từ X trong xâu.
  • Ví Dụ:
Input

Output

Toi moi mua mot chiec PC moi, PC moi, that su rat moi! moi4
Chiec PC moi chay that muot

ngon

0

Bài 5: (4 điểm) Tách các thành phần trong số điện thoại bàn ?

  • Diễn giải:
  • Nhập vào một chuỗi s là số điện thoại bàn đầy đủ. Tách các thành phần trong số điện thoại: mã quốc gia, mã vùng, số điện thoại chính.
  • Input: Chuỗi s trên một dòng, có độ dài không vượt quá 102, chứa các chữ cái, chữ số, và ký hiệu. Các thành phần phân tách nhau bởi dấu cách
  • Output: In mã quốc gia trên dòng một, mã vùng trên dòng hai và số điện thoại chính trên dòng ba
  • Ví dụ:
Input

Output

+1 212 5551234+1
212
5551234

 


+84 273 987654321+84
273
987654321

 

Đáp án bài 1: (4 điểm) Phân Loại nguy cơ nhiễm Covid ?

 

import sys
sys.stdin=open('D191.INP','r')
sys.stdout=open('D191.OUT','w')
n=int(input())
if 0<=n<20:
    print('Nguy co thap')
elif 20<=n<50:
    print('Nguy co trung binh')
elif 50<=n<150:
    print('Nguy co cao')
elif 150<=n:
    print('Nguy co rat cao')

 

Đáp án bài 2: (4 điểm) In sổ đảo ngược của các số nguyên từ m đến n ?

 

import sys
sys.stdin=open('D192.INP','r')
sys.stdout=open('D192.OUT','w')
def daonguoc(n):
    s=str(n)
    s=s[::-1]
    return int(s)
m,n=map(int,input().split())
for i in range(m,n+1):
    print(daonguoc(i),end=' ')

 

Đáp án bài 3: (4 điểm) In các số có tổng chữ số là số chính phương trong mảng ?

 

import sys,math
sys.stdin=open('D193.INP','r')
sys.stdout=open('D193.OUT','w')
def tcs(n):
    tong=0
    while n>0:
        tong+=n%10
        n=n//10
    return tong
def ktcp(n):
    if n<0:
        return False
    x=int(math.sqrt(n))
    return x*x==n
n=int(input())
a=[]
while True:
    try:
        line=input()
        try:
            x=int(line)
            a.append(x)
        except ValueError:
            break
    except EOFError:
        break
dem=0
for i in range(len(a)):
    if ktcp(tcs(abs(a[i]))):
        dem+=1
        print(a[i],end=' ')
if dem==0:
    print('-')

 

Đáp án bài 4: (4 điểm) Đếm số lần xuất hiện của một từ trong xâu ?

 

import sys
sys.stdin=open('D194.INP','r')
sys.stdout=open('D194.OUT','w')
s1=input()
s2=input()
print(s1.count(s2))

 

Đáp án bài 5: (4 điểm) Tách các thành phần trong số điện thoại bàn ?

 

import sys
sys.stdin=open('D195.INP','r')
sys.stdout=open('D195.OUT','w')
a=list(map(str,input().split()))
for i in range(len(a)):
    print(a[i])

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é !

Miễn phí 10% khóa học lập trình Python online “Hãy đăng ký ngay để được khuyến mãi !” 

  • Qua đường dây nóng hỏi: 093.717.9278 ( Gặp Thầy Tấn Dân Cử Nhân Công Nghệ Thông Tin)
  • Thầy Dân chuyên bồi dưỡng môn tin học thi học sinh giỏi cấp huyện, cấp tỉnh, ôn luyện thi vào Trường Chuyên Tin.

Khóa học Python online từ cơ bản đến nâng cao

Khóa học Python online từ cơ bản đến nâng cao

Trung tâm tin học Tấn Dân

Thông tin Khuyến mãi giảm giá học phí!

  • Giảm giá ưu đãi 100.000 đ khi đăng ký 2 bạn sinh viên học sinh trở lên !
  • Giảm 15% khi  tham gia 3 bạn sinh viên học sinh trở lên
  • Lưu ý :
    • Để nhận Ưu đãi học viên vui lòng đăng ký qua số điện thoại gặp Thầy Dân qua số điện thoại & Zalo: 0937.179.278
    • Học phí tham gia khóa học Online 1.600.000 trong 7 tháng.
    • Học từ cơ bản đến nâng cao và đến giải đề thi cấp Huyện.
    • Trong nhiều chính sách ưu đãi học viên chỉ áp dụng chính sách ưu đãi cao nhất!
    • Có nhận học viên thường xuyên
    • Thời gian học từ thứ 3 và thứ 5;  từ 2 giờ đến 4 giờ hàng tuần.
  • Hãy đăng ký ngay để nhận ưu đãi đến hết ngày 10 tháng 10 năm 2024 !

 

 

13 Đề thi học sinh giỏi Tin học THCS có đáp án hay nhất

Để giải được các đề thi học sinh giỏi Tin Học THCS các em cần phải giải thường xuyên các đề thi học sinh giỏi cấp huyện thì các em có thể nắm các dạng đề để chuẩn bị tốt nhất cho các kỳ thi sắp tới! cho nên thầy đã soạn ra hơn 13 Đề thi học sinh giỏi Tin học THCS có đáp án hay nhất năm 2024.  Các em hãy xem các bài tập bên dưới ngay và tự giải nhé ! khi nào khó khăn quá hãy xem bài giải có đáp án phía dưới các em nhé !

Đây đã là đề thi số 13 Đề thi học sinh giỏi Tin học THCS có đáp án 

Các đề thi ở cấp huyện cần luyện tập nâng cao:

  1. Tự học Python từ cơ bản đến nâng cao đến giải đề thi nhé có tài liệu pdf tải về học

Rồi còn chờ gì nữa hãy nhanh tay giải ngay đề 13  thi học sinh giỏi Tin Học Python cấp huyện !

 

Thứ tựTên bàiFile

chương

trình

File dữ liệu vàoFile kết quả
Bài 1Phân loại đường dây điệnD141.*D141.INPD141.OUT
Bài 2In tổng chữ số của các số nguyên từ m đến nD142.*D142.INPD142.OUT
Bài 3In các số nguyên tố trong mảngD143.*D143.INPD143.OUT
Bài 4Tính tổng các chữ số có trong xâu sD144.*D144.INPD144.OUT
Bài 5Kiểm tra chuỗi s có phải là một địa chỉ emailD145.*D145.INPD145.OUT

 

Dấu * được thay thế bởi PY, CPP của ngôn ngữ lập trình được sử dụng tương ứng là Python hoặc C++

Bài 1: (4 điểm) Phân loại đường dây điện ?

  • Diễn giải:
    1. Cao thế: Điện áp từ 500 KV trở lên
    2. Trung thế: Điện áp từ 100 KV đến 499 KV
    3. Hạ thế: Điện áp dưới 100 KV
  • Input: Số nguyên X là điện áp đi qua của đường dây (0<=x<=5000)
  • Output: Loại theo mô tả trên
  • Ví dụ:
inputoutput
620Cao the
85Ha the

 

Bài 2: (4 điểm) In tổng chữ số của các số nguyên từ m đến n ?

  • Diễn giải:
    • Nhập vào hai số nguyên m và n (m<=n).
    • In ra tổng chữ số của các số nguyên từ m đến n
  • Input: Hai số nguyên dương m và n (0<m, n<106), mỗi số trên một dòng.
  • Output: Tổng chữ số của các số nguyên theo thứ tự từ m đến n, các số cách nhau một dấu cách.
  • Ví dụ:
InputOutput
11

15

2 3 4 5 6
2

13

2 3 4 5 6 7 8 9 1 2 3 4

Bài 3: (4 điểm) in các số nguyên tố trong mảng ?

  • Diễn giải:
    • Nhập vào một mảng số nguyên a: ao, ai, &2, ….
    • In các số nguyên tố trong mảng theo thứ tự xuất hiện.
  • Input: Mỗi dòng một số nguyên có giá trị tuyệt đối không vượt quá 105.
  • Output: Các số nguyên tố trong mảng trên cùng một dòng, theo thứ tự xuất hiện, cách nhau bởi dấu cách. Nếu không có số nguyên tố nào trong mảng thì in “-“
  • Ví  dụ:

 

InputOutput
93 7
6
3
8
10
7
-2
77 3 2
3
8
0
2

Bài 4: (4 điểm) Tính tổng các chữ số có trong xâu s ?

  • Diễn giải:
    • Nhập vào một xâu s.
    • Tính tổng các chữ số có trong xâu s
  • Input: Xâu s trên một dòng, có độ dài không vượt quá 105, chứa các ký tự là chữ cái, chữ số, ký hiệu và các dấu cách.
  • Output: Tổng các chữ số có trong xâu s
  • Ví dụ:
InputOutput
Toi hoc LAP TRINH C++ tu nam 20248
Thi HOC SINH GIOI mon Tin Hoc vao thang 02 nam 202410

Bài 5: (4 điểm) Kiểm tra chuỗi s có phải là một địa chỉ email ?

Diễn giải:

Nhập vào một chuỗi s. Kiểm tra xem chuỗi s có phải là một địa chỉ email, một chuỗi s là email hợp lệ khi:

  • Bắt đầu bằng một chữ cái.
  • Chứa ít nhất một chữ cái, một chữ số, một dấu chấm (.)
  • Chứa đúng một dấu @.
  • Sau dấu @ là một tên miền (có ít nhất một dấu chấm nam giữa tên miền).

Input: Chuỗi s trên một dòng, có độ dài không vượt quá 10 mủ 2, chứa các ký tự là chữ cái, chữ số, ký hiệu, và các dấu cách.

Output: In “Yes” nếu s là một địa chỉ email hợp lệ, ngược lại là “No”

Input

Output

TranPhiAnBinh.TienGiang63@gmail.comYes
123TranPhiAnBinh.TienGiang63@gmail.comNo
TranPhiAnBinh.TienGiang63gmail.@comNo

Đáp án bài 1: (4 điểm) Phân loại đường dây điện ?

 

import sys
sys.stdin=open('D141.INP','r')
sys.stdout=open('D141.OUT','w')
n=int(input())
if n>500:
    print('Cao the')
elif 100<=n<=499:
    print('Trung the')
elif n<100:
    print('Ha the')

 

Đáp án bài 2: (4 điểm) In tổng chữ số của các số nguyên từ m đến n ?

 

import sys
sys.stdin=open('D142.INP','r')
sys.stdout=open('D142.OUT','w')
def tcs(n):
    t=0
    while n>0:
        t+=n%10
        n//=10
    return t
m=int(input())
n=int(input())
for i in range(m,n+1):
    print(tcs(i),end=' ')

 

Đáp án bài 3: (4 điểm) in các số nguyên tố trong mảng ?

 

import sys
sys.stdin=open('D143.INP','r')
sys.stdout=open('D143.OUT','w')
def ktnt(n):
    i=2
    while i*i<=n and n%i!=0:
        i+=1
    return i*i>n and n>1
a=[]
while True:
    try:
        line=input()
        try:
            x=int(line)
            a.append(x)
        except ValueError:
            break
    except EOFError:
        break
dem=0
for i in range(len(a)):
    if ktnt(a[i]):
        dem+=1
        print(a[i],end=' ')
if dem==0:
    print('-')

 

Đáp án bài 4: (4 điểm) Tính tổng các chữ số có trong xâu s ?

 

import sys
sys.stdin=open('D144.INP','r')
sys.stdout=open('D144.OUT','w')
n=input()
a=list(n)
tong=0
for i in n:
    if i.isdigit():
        tong+=int(i)
print(tong)

 

Đáp án bài 5: (4 điểm) Kiểm tra chuỗi s có phải là một địa chỉ email ?

 

import sys
sys.stdin=open('D145.INP','r')
sys.stdout=open('D145.OUT','w')
s=input()
dk1=0
if s[0].isalpha():
    dk1=1
dk2=0
dk21=dk1
dk22=0
dk23=0
for i in range(len(s)):
    if s[i].isnumeric():
        dk22=1
        break
for i in range(len(s)):
    if s[i]=='.':
        dk23=1
        break
if dk21==1 and dk22==1 and dk23==1:
    dk2=1
dk3=0
if s.count('@')==1:
    dk3=1
vt=s.find('@')
dk4=0
for i in range(vt,len(s)):
    if s[i]=='.':
        dk4=1
dk5=1
if (not s[vt-1].isalnum()) or (not s[vt+1].isalnum()):
    dk5=0
if dk1==1 and dk2==1 and dk3==1 and dk4==1 and dk5==1:
    print('Yes')
else:
    print('No')

 

 

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é !

Miễn phí 10% khóa học lập trình Python online “Hãy đăng ký ngay để được khuyến mãi !” 

  • Qua đường dây nóng hỏi: 093.717.9278 ( Gặp Thầy Tấn Dân Cử Nhân Công Nghệ Thông Tin)
  • Thầy Dân chuyên bồi dưỡng môn tin học thi học sinh giỏi cấp huyện, cấp tỉnh, ôn luyện thi vào Trường Chuyên Tin.

Khóa học Python online từ cơ bản đến nâng cao

Khóa học Python online từ cơ bản đến nâng cao

Trung tâm tin học Tấn Dân

Thông tin Khuyến mãi giảm giá học phí!

  • Giảm giá ưu đãi 100.000 đ khi đăng ký 2 bạn sinh viên học sinh trở lên !
  • Giảm 15% khi  tham gia 3 bạn sinh viên học sinh trở lên
  • Lưu ý :
    • Để nhận Ưu đãi học viên vui lòng đăng ký qua số điện thoại gặp Thầy Dân qua số điện thoại & Zalo: 0937.179.278
    • Học phí tham gia khóa học Online 1.600.000 trong 7 tháng.
    • Học từ cơ bản đến nâng cao và đến giải đề thi cấp Huyện.
    • Trong nhiều chính sách ưu đãi học viên chỉ áp dụng chính sách ưu đãi cao nhất!
    • Có nhận học viên thường xuyên
    • Thời gian học từ thứ 3 và thứ 5;  từ 2 giờ đến 4 giờ hàng tuần.
  • Hãy đăng ký ngay để nhận ưu đãi đến hết ngày 10 tháng 10 năm 2024 !