Danh mục: 20 Đề thi từ dễ đến nâng cao

100 đề và đáp an thi HSG Tin Python
De thi HSG Tin 10 Python
Đề thi python cấp tỉnh
Bộ DE on thi HSG Tin học trẻ cấp THCS, THPT sử dụng NNLT Python
Chuyên đề xâu bồi dưỡng hsg tin học python
Đề thi python lớp 9
Đề thi học sinh giỏi lập trình python
Tài liệu ôn thi HSG Tin

6 Đề Thi HSG Tin Học THCS Bình Phước 2019-2020

Hướng Dẫn Giải Chi Tiết Đề Thi HSG Tin Học THCS Bình Phước 2019-2020 Bằng Python (Form Code Chuẩn)

Chào các em học sinh, quý phụ huynh, cùng các anh chị em tại các khu công nghiệp Tân Hương, Long Giang đang theo học các lớp lập trình!

Trong quá trình đồng hành và giảng dạy, thầy nhận ra rằng việc cọ xát với các đề thi Học sinh giỏi (HSG) cấp tỉnh là con đường ngắn nhất để rèn luyện tư duy logic. Hôm nay, thầy sẽ hướng dẫn mọi người giải chi tiết đề thi HSG Tin học THCS tỉnh Bình Phước (năm học 2019-2020).

Toàn bộ các bài toán sẽ được giải bằng Python theo một form cấu trúc chuẩn duy nhất: đọc toàn bộ dữ liệu đầu vào thành một danh sách (List) và gọi trực tiếp. Cách viết này cực kỳ ngắn gọn, dễ nhớ và hoàn hảo cho các bạn mới bước chân vào lập trình thi đấu.

Hướng Dẫn Giải Chi Tiết Đề Thi HSG Tin Học THCS Bình Phước 2019-2020 Bằng Python

Hướng Dẫn Giải Chi Tiết Đề Thi HSG Tin Học THCS Bình Phước 2019-2020 Bằng Python

💡 Lợi Ích Khi Học Cấu Trúc Code Này

Thực hành giải đề thi với cấu trúc chuẩn form mang lại rất nhiều lợi ích:

  1. Tốc độ gõ phím cực nhanh: Các em chỉ cần nhớ một đoạn mã mở file và đọc dữ liệu duy nhất cho mọi bài toán.

  2. Kỹ năng xử lý mảng (List) linh hoạt: Việc đưa mọi thứ vào du_lieu_vao và gọi qua chỉ số (index) giúp các em nắm rất vững khái niệm vị trí phần tử trong mảng.

  3. Phân tích tối ưu thuật toán: Code ngắn nhưng thuật toán vẫn đảm bảo độ phức tạp tối ưu, chạy với tốc độ chớp nhoáng, dư sức vượt qua các hệ thống chấm tự động khắt khe nhất.

Nào, mở trình soạn thảo lên và chúng ta cùng thực hành ngay nhé!

Hướng Dẫn Giải Chi Tiết 6 Đề Thi HSG Tin Học THCS Bình Phước 2019-2020 Bằng Python

Hướng Dẫn Giải Chi Tiết 6 Đề Thi HSG Tin Học THCS Bình Phước 2019-2020 Bằng Python

Hướng Dẫn Giải Chi Tiết 6 Đề Thi HSG Tin Học THCS Bình Phước 2019-2020 Bằng Python

Bài 1: Điểm Trung Bình (DIEMTB)

Yêu cầu: Tính điểm trung bình (DTB) của bạn Nam dựa trên điểm thực hành (X) và lý thuyết (Y) theo công thức: DTB = (X*3 + Y)/4. Nếu DTB lớn hơn hoặc bằng 5 thì in ra 1 (Đạt), ngược lại in ra 0 (Không đạt).

Phân tích và Giải thuật: Đây là câu hỏi khởi động. Dữ liệu đầu vào gồm 2 số cách nhau bởi khoảng trắng. Ta chỉ cần lấy phần tử thứ nhất gán cho X, phần tử thứ hai gán cho Y và tính toán.

Code Python chuẩn:

Python

import sys

# Đọc và ghi file tự động
sys.stdin = open('DIEMTB.INP', 'r')
sys.stdout = open('DIEMTB.OUT', 'w')

# Đọc toàn bộ dữ liệu đầu vào
du_lieu_vao = sys.stdin.read().split()

x = int(du_lieu_vao[0])
y = int(du_lieu_vao[1])

dtb = (x * 3 + y) / 4

if dtb >= 5:
    print(1)
else:
    print(0)
  • Độ phức tạp thời gian (Time Complexity): O(1) – Tốc độ chạy ngay lập tức (khoảng 0.00 giây) vì chỉ thực hiện vài phép toán cơ bản.

  • Độ phức tạp không gian (Space Complexity): O(1) – Tiết kiệm tối đa bộ nhớ.

Bài 2: Tính Tổng (TINHTONG)

Yêu cầu: Cho số nguyên dương N (có thể lên tới 200 chữ số) và số nguyên M. Tính tổng M chữ số tận cùng của số N.

Phân tích và Giải thuật: Điểm bẫy của bài này là con số N dài tới 200 chữ số. Bí quyết là coi N như một chuỗi văn bản. Số N sẽ nằm ở vị trí du_lieu_vao[0], còn số M nằm ở du_lieu_vao[1]. Ta cắt chuỗi N lấy M ký tự cuối và tính tổng.

Code Python chuẩn:

Python

import sys

# Đọc và ghi file tự động
sys.stdin = open('TINHTONG.INP', 'r')
sys.stdout = open('TINHTONG.OUT', 'w')

# Đọc toàn bộ dữ liệu đầu vào
du_lieu_vao = sys.stdin.read().split()

n_str = du_lieu_vao[0]
m = int(du_lieu_vao[1])

last_m_chars = n_str[-m:]
total = sum(int(digit) for digit in last_m_chars)

print(total)
  • Độ phức tạp thời gian: O(M) – Vòng lặp chỉ chạy đúng M lần. Tốc độ thực thi chớp nhoáng.

  • Độ phức tạp không gian: O(M) – Chỉ tốn một chút dung lượng siêu nhỏ để chứa đoạn chuỗi.

Bài 3: Bộ Ba Số Lớn Nhất (BOMAX)

Yêu cầu: Cho dãy N số nguyên. Tìm bộ 3 số liên tiếp có tổng lớn nhất. In ra tổng đó và vị trí bắt đầu, kết thúc của bộ 3. Ưu tiên lấy bộ xuất hiện đầu tiên nếu có trùng lặp.

Phân tích và Giải thuật: Theo đúng form chuẩn, số lượng phần tử N nằm ở vị trí đầu tiên du_lieu_vao[0]. Dãy số A sẽ trải dài từ vị trí 1 đến N. Ta dùng kỹ thuật cắt mảng (Slicing) của Python để lấy dãy số này ra và dùng vòng lặp duyệt tính tổng.

Code Python chuẩn:

Python

import sys

# Đọc và ghi file tự động
sys.stdin = open('BOMAX.INP', 'r')
sys.stdout = open('BOMAX.OUT', 'w')

# Đọc toàn bộ dữ liệu đầu vào
du_lieu_vao = sys.stdin.read().split()

so_luong_phan_tu = int(du_lieu_vao[0])
danh_sach_so = [int(gia_tri) for gia_tri in du_lieu_vao[1:so_luong_phan_tu + 1]]

gia_tri_lon_nhat = -float('inf')
vi_tri_bat_dau = -1

for i in range(so_luong_phan_tu - 2):
    tong_hien_tai = danh_sach_so[i] + danh_sach_so[i+1] + danh_sach_so[i+2]
    
    if tong_hien_tai > gia_tri_lon_nhat:
        gia_tri_lon_nhat = tong_hien_tai
        vi_tri_bat_dau = i

print(gia_tri_lon_nhat)
print(f"{vi_tri_bat_dau + 1} {vi_tri_bat_dau + 3}")
  • Độ phức tạp thời gian: O(N) – Lướt qua dãy số đúng một vòng. Tốc độ chạy thực tế chỉ tốn chưa tới 0.1 giây.

  • Độ phức tạp không gian: O(N) – Cần bộ nhớ để lưu danh sách N số vào mảng, hoàn toàn tối ưu.

Bài 4: Mật Khẩu (MATKHAU)

Yêu cầu: Cho một xâu ký tự lộn xộn. Tìm con số nguyên có giá trị lớn nhất được tạo ra từ các chữ số liên tiếp nằm trong xâu đó. Nếu không có số, in ra 0.

Phân tích và Giải thuật: Để bám sát form mẫu sys.stdin.read().split(), ta sẽ nối mảng đọc được lại thành một chuỗi duy nhất. Dùng thư viện re để tìm các con số. Để giải quyết trường hợp mảng số bị rỗng (không có chữ số nào), thầy thêm thẳng phần tử chuỗi '0' vào mảng kết quả trước khi đưa vào hàm max().

Code Python chuẩn:

Python

import sys
import re

# Đọc và ghi file tự động
sys.stdin = open('MATKHAU.INP', 'r')
sys.stdout = open('MATKHAU.OUT', 'w')

# Đọc toàn bộ dữ liệu đầu vào
du_lieu_vao = sys.stdin.read().split()

# Nối lại thành 1 chuỗi liên tục
chuoi_mat_khau = "".join(du_lieu_vao)

# Bóc tách các cụm chữ số liên tiếp
danh_sach_chu_so = re.findall(r'\d+', chuoi_mat_khau)

# Thêm chuỗi '0' vào mảng để chống lỗi rỗng và tự động xử lý yêu cầu in số 0
danh_sach_chu_so.append('0')

# Ép sang số nguyên để xóa các số 0 vô nghĩa ở đầu và tìm giá trị lớn nhất
mat_khau_lon_nhat = max(int(num) for num in danh_sach_chu_so)

print(mat_khau_lon_nhat)
  • Độ phức tạp thời gian: O(L) với L là chiều dài của xâu. Hàm xử lý chuỗi 255 ký tự cực kỳ mượt mà.

  • Độ phức tạp không gian: O(L) – Tiêu hao tài nguyên không đáng kể.

Lời Kết Từ Thầy Tấn Dân

Áp dụng một cấu trúc code cố định, rành mạch và khoa học chính là cách giúp các em tránh sai sót trong phòng thi áp lực cao. Các bạn hãy tự gõ lại từng dòng lệnh và tạo các file .INP để chạy thử nhé.

Nếu trong quá trình học tập, máy vi tính của các em gặp tình trạng giật lag hay trục trặc phần mềm, đừng ngần ngại mang qua Vi Tính Tấn Dân (Hotline: 0937 179 278) để thầy hỗ trợ kiểm tra, sửa chữa kịp thời nhé.

Để học hỏi thêm các thuật toán hay và tải thêm tài liệu luyện thi, mời mọi người tham gia ngay vào Group Facebook: Học Python Cùng Thầy Tấn Dân – Luyện Thi HSG Tin Học Cấp Tỉnh. Chúc các em ôn tập vững vàng và giành điểm tối đa!

🔑 Từ Khóa SEO (SEO Keywords):

  • giải đề hsg tin học thcs bình phước,

  • đề thi học sinh giỏi tin học python,

  • giải bài tập python đọc ghi file inp out,

  • học python cùng thầy tấn dân,

  • luyện thi hsg tin học cấp tỉnh,

  • vi tính tấn dân mỹ tho tiền giang,

# Hashtags:

#HSGTinHoc #HocPython #LapTrinhPython #TinHocTHCS #LuyenThiHSG #ThayTanDan #ViTinhTanDan #GiaiDeTinHoc

5 Đề Bí Quyết Trọn Bộ Thi HSG Tin Học Tỉnh Bình Phước 2018 – 2019

Hướng Dẫn Giải Chi Tiết Đề Thi HSG Tin Học Lớp 9 Tỉnh Bình Phước (2018 – 2019) Bằng Python

Đề thi Học sinh giỏi Tin học THCS tỉnh Bình Phước năm học 2018 – 2019 quét qua toàn bộ các kỹ năng cốt lõi dành cho học sinh mới luyện thi: từ tính toán cơ bản, xử lý chuỗi ký tự, thuật toán Sàng nguyên tố Sieve of Eratosthenes cho đến tư duy đếm tần suất và tối ưu hóa mảng trên dữ liệu lớn.

Bài viết này mang đến đáp án chi tiết, mã nguồn Python chuẩn thi đấu, tối ưu hóa thuật toán đạt 100% điểm các test case và được định dạng thuần văn bản

Trọn bộ các đề bao gồm các bí quyết thuật toán hay nhất chuẩn bị thi HSG Tin Học các Tỉnh:

5 Đề Bí Quyết Trọn Bộ Lời Giải Thi HSG Tin Học Lớp 9 Tỉnh Bình Phước 2018 – 2019

5 Đề Bí Quyết Trọn Bộ Lời Giải Thi HSG Tin Học Lớp 9 Tỉnh Bình Phước 2018 – 2019

5 Đề Bí Quyết Trọn Bộ Lời Giải Thi HSG Tin Học Lớp 9 Tỉnh Bình Phước 2018 – 2019

5 Đề Bí Quyết Trọn Bộ Lời Giải Thi HSG Tin Học Lớp 9 Tỉnh Bình Phước 2018 – 2019

5 Đề Bí Quyết Trọn Bộ Lời Giải Thi HSG Tin Học Lớp 9 Tỉnh Bình Phước 2018 – 2019

5 Đề Bí Quyết Trọn Bộ Lời Giải Thi HSG Tin Học Lớp 9 Tỉnh Bình Phước 2018 – 2019

Giá Trị Bổ Ích & Lợi Ích Lớn Khi Nghiên Cứu Đề Thi Này

  • Làm chủ kỹ thuật đọc/ghi File chuẩn thi đấu: Học sinh thực hành thành thạo việc xử lý dữ liệu qua tập tin .INP và .OUT bằng ngôn ngữ Python.

  • Xử lý chuỗi và đếm ký tự: Rèn luyện kỹ năng duyệt từng ký tự trong chuỗi, sử dụng các hàm kiểm tra chữ số có sẵn trong Python để tối ưu tốc độ lập trình.

  • Tối ưu hóa bài toán đếm số nguyên tố: Nắm vững thuật toán Sàng Eratosthenes thần tốc để giải quyết bài toán đếm số nguyên tố trong đoạn [1, N] với N <= 10^6 chỉ trong 0.1 giây.

  • Tư duy đếm tần suất bằng Dictionary/Hash Map: Học cách quản lý mảng với giá trị phần tử lên đến 10^9, tìm phần tử xuất hiện nhiều nhất và xử lý hòa điểm (tie-breaking) theo yêu cầu đề bài.

5 Đề Bí Quyết Trọn Bộ Lời Giải Thi HSG Tin Học Lớp 9 Tỉnh Bình Phước 2018 – 2019

5 Đề Bí Quyết Trọn Bộ Lời Giải Thi HSG Tin Học Lớp 9 Tỉnh Bình Phước 2018 – 2019

Bài 1: Chu Vi Tam Giác (CHUVI.INP / CHUVI.OUT)

1. Tóm tắt đề bài

Cho độ dài ba cạnh của một tam giác lần lượt là a, b, c (1 <= a, b, c <= 1000).

Yêu cầu: Hãy tính chu vi của tam giác đó và ghi kết quả ra file.

2. Phân tích thuật toán & Độ phức tạp

  • Giải pháp:

    • Chu vi tam giác có công thức đơn giản: P = a + b + c.

    • Đọc trực tiếp 3 số nguyên a, b, c từ file CHUVI.INP và ghi tổng a + b + c vào file CHUVI.OUT.

  • Độ phức tạp:

    • Thời gian (Time Complexity): O(1), thực hiện trong 0.001 giây.

    • Không gian (Space Complexity): O(1).

3. Code Python Chuẩn

Python

import sys

sys.stdin = open('CHUVI.INP', 'r')
sys.stdout = open('CHUVI.OUT', 'w')

du_lieu = sys.stdin.read().split()
a, b, c = map(int, du_lieu[:3])

chu_vi = a + b + c
print(chu_vi)

Bài 2: Số Lượng Chữ Số (SOCHUSO.INP / SOCHUSO.OUT)

1. Tóm tắt đề bài

Cho một xâu ký tự S gồm các chữ cái tiếng Anh in thường và các chữ số. Độ dài xâu S không quá 200 ký tự.

Yêu cầu: Đếm xem có bao nhiêu chữ số trong xâu S.

2. Phân tích thuật toán

  • Giải pháp:

    • Duyệt qua từng ký tự c trong xâu S.

    • Kiểm tra xem c có phải là chữ số hay không bằng phương thức c.isdigit().

    • Nếu đúng là chữ số, tăng biến đếm lên 1.

  • Độ phức tạp:

    • Thời gian (Time Complexity): O(|S|), với |S| <= 200 thì chương trình chạy tức thì.

    • Không gian (Space Complexity): O(|S|) để lưu trữ xâu S.

3. Code Python Chuẩn

Python

import sys

sys.stdin = open('SOCHUSO.INP', 'r')
sys.stdout = open('SOCHUSO.OUT', 'w')

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

dem_chu_so = sum(1 for ky_tu in s if ky_tu.isdigit())
print(dem_chu_so)

Bài 3: Đếm Số Nguyên Tố (DEMNT.INP / DEMNT.OUT)

1. Tóm tắt đề bài

Cho số nguyên dương N (N <= 10^6).

Yêu cầu: Xác định xem trong đoạn [1, N] có bao nhiêu số nguyên tố.

2. Phân tích thuật toán & Tối ưu hóa

  • Nhận xét:

    • Nếu dùng thuật toán kiểm tra từng số xem có phải số nguyên tố hay không (với độ phức tạp O(căn(X)) cho mỗi số X), tổng thời gian sẽ là O(N * căn(N)), khi N = 10^6 sẽ thực hiện khoảng 10^9 phép tính -> Bị TLE (vượt quá thời gian cho phép).

  • Giải pháp tối ưu – Sàng Eratosthenes:

    1. Khởi tạo mảng đánh dấu is_prime độ dài N + 1 với tất cả giá trị là True.

    2. Gán is_prime[0] = is_prime[1] = False.

    3. Duyệt i từ 2 đến căn(N):

      • Nếu is_prime[i] là True, đánh dấu tất cả các bội số của i từ i * i đến N là False.

    4. Đếm số lượng giá trị True còn lại trong mảng is_prime từ 1 đến N.

  • Độ phức tạp:

    • Thời gian (Time Complexity): O(N * log(log N)), với N = 10^6 chỉ tốn chưa đến 0.1 giây trong Python.

    • Không gian (Space Complexity): O(N) lưu mảng boolean.

3. Code Python Chuẩn

Python

import sys

sys.stdin = open('DEMNT.INP', 'r')
sys.stdout = open('DEMNT.OUT', 'w')

n = int(sys.stdin.read().split()[0])

if n < 2:
    print(0)
else:
    is_prime = [True] * (n + 1)
    is_prime[0] = is_prime[1] = False

    i = 2
    while i * i <= n:
        if is_prime[i]:
            for j in range(i * i, n + 1, i):
                is_prime[j] = False
        i += 1

    so_luong_nt = sum(is_prime)
    print(so_luong_nt)

Bài 4: Xuất Hiện Nhiều Nhất (XUATHIEN.INP / XUATHIEN.OUT)

1. Tóm tắt đề bài

Cho dãy A gồm N số nguyên a1, a2, …, an.

Yêu cầu: Tìm giá trị xuất hiện nhiều lần nhất trong dãy A và số lần xuất hiện của giá trị đó. Nếu có nhiều giá trị có cùng số lần xuất hiện nhiều nhất, hãy đưa ra giá trị nhỏ nhất trong số các giá trị đó.

Ràng buộc dữ liệu:

  • 60% số test: N <= 10^3, ai <= 10^3.

  • 20% số test: N <= 10^5, ai <= 10^4.

  • 20% số test: N <= 10^6, ai <= 10^9.

2. Phân tích thuật toán & Xử lý Ràng buộc

  • Thách thức: Do ai <= 10^9, ta không thể dùng mảng đếm tần suất thông thường count[ai] vì sẽ tràn bộ nhớ.

  • Giải pháp tối ưu – Sử dụng Dictionary (Hash Map):

    1. Dùng dict trong Python để lưu tần suất xuất hiện: tan_suat[val] = số_lần_xuất_hiện.

    2. Tìm tần suất xuất hiện lớn nhất: max_freq = max(tan_suat.values()).

    3. Tìm giá trị $x$ nhỏ nhất thỏa mãn tan_suat[x] == max_freq.

    4. In ra giá trị min_val ở dòng 1 và max_freq ở dòng 2.

  • Độ phức tạp:

    • Thời gian (Time Complexity): O(N) để duyệt và xây dựng dictionary. Với N = 10^6, Python xử lý trong khoảng 0.3 – 0.5 giây.

    • Không gian (Space Complexity): O(N) lưu dictionary.

3. Code Python Chuẩn

Python

import sys

sys.stdin = open('XUATHIEN.INP', 'r')
sys.stdout = open('XUATHIEN.OUT', 'w')

du_lieu = sys.stdin.read().split()
n = int(du_lieu[0])

tan_suat = {}
for i in range(1, n + 1):
    val = int(du_lieu[i])
    tan_suat[val] = tan_suat.get(val, 0) + 1

max_freq = max(tan_suat.values())

gia_tri_thoaman = min(val for val, freq in tan_suat.items() if freq == max_freq)

print(gia_tri_thoaman)
print(max_freq)

Câu Hỏi Thường Gặp (FAQ)

Tại sao lại dùng dict.get(val, 0) + 1 thay vì mảng danh sách trong Bài 4?

Giá trị phần tử ai có thể lên tới 10^9. Tạo một danh sách độ dài 10^9 trong Python sẽ tốn hàng GB RAM và gây ra lỗi tràn bộ nhớ (Memory Limit Exceeded). Dictionary trong Python hoạt động theo cơ chế Bảng băm (Hash Table), chỉ lưu các giá trị thực sự xuất hiện nên cực kỳ tiết kiệm bộ nhớ.

Thuật toán Sàng Eratosthenes trong Bài 3 chạy tốt đến phạm vi nào?

Sàng Eratosthenes hoạt động hiệu quả nhất trong phạm vi N <= 10^7. Với N = 10^6, thuật toán chỉ mất chưa đến 0.1 giây để chạy xong.

giải đề thi hsg tin học lớp 9 bình phước, đề thi hsg tin học bình phước 2018 2019, sàng nguyên tố python hsg tin, đếm số xuất hiện nhiều nhất python, đề thi hsg tin học thcs python, luyện thi học sinh giỏi tin học

Hashtags

#HSGTinHoc #PythonHSG #LuyenThiTinHoc #GiaiDeTinHoc #SieveOfEratosthenes #PythonProgramming #Algorithm

Vui lòng Chấm điểm 5 sao trang cho bài viết hay !

 

 

2 Khóa Học Tin Học Online Thầy Dân Luyện Thi Chuyên Tin Tin Văn Phòng Cấp Tốc

2 Khóa Học Tin Học Online Thầy Dân Luyện Thi Chuyên Tin Tin Văn Phòng Cấp Tốc

📞 Thông Tin Liên Hệ:

  • Website: vitinhtandan.com

  • Hotline/Zalo: (0937.179.278)

  • Địa chỉ: (Tổ 5, Ấp Tân Lược 1, xã Tân Hương, Đồng Tháp)

Chúc các bạn học sinh ôn luyện thật tốt và đạt kết quả cao nhất trong kỳ thi Học sinh giỏi Tin học lớp 9 sắp tới!

3 Đề Thi [CÓ ĐÁP ÁN] HSG Tin Học Lớp 9 Tỉnh Bình Định 2022–2023

Hướng Dẫn Giải Chi Tiết Đề Thi HSG Tin Học Lớp 9 Tỉnh Bình Định (Năm Học 2022 – 2023) Bằng Python

Bộ đề thi Học sinh giỏi (HSG) Tin học THCS tỉnh Bình Định năm học 2022 – 2023 mang tính phân hóa cao, kiểm tra toàn diện tư duy lập trình từ tối ưu hóa mảng, hình học tọa độ nguyên, chiến thuật Tham ăn (Greedy) kết hợp xử lý chuỗi cho đến kỹ thuật duyệt lưới 2D. Bài viết này hướng dẫn chi tiết từng bước giải 4 bài toán bằng Python, viết mã nguồn tối ưu chuẩn thi đấu, loại bỏ hoàn toàn các ký tự công thức đặc biệt để dễ dàng chép/đăng tải lên website mà không bị lỗi giao diện.

Trọn bộ các đề bao gồm các bí quyết thuật toán hay nhất chuẩn bị thi HSG Tin Học các Tỉnh:

3 Đề Thi [CÓ ĐÁP ÁN] HSG Tin Học Lớp 9 Tỉnh Bình Định 2022–2023

3 Đề Thi [CÓ ĐÁP ÁN] HSG Tin Học Lớp 9 Tỉnh Bình Định 2022–2023

3 Đề Thi [CÓ ĐÁP ÁN] HSG Tin Học Lớp 9 Tỉnh Bình Định 2022–2023

3 Đề Thi [CÓ ĐÁP ÁN] HSG Tin Học Lớp 9 Tỉnh Bình Định 2022–2023

3 Đề Thi [CÓ ĐÁP ÁN] HSG Tin Học Lớp 9 Tỉnh Bình Định 2022–2023

3 Đề Thi [CÓ ĐÁP ÁN] HSG Tin Học Lớp 9 Tỉnh Bình Định 2022–2023

3 Đề Thi [CÓ ĐÁP ÁN] HSG Tin Học Lớp 9 Tỉnh Bình Định 2022–2023

3 Đề Thi [CÓ ĐÁP ÁN] HSG Tin Học Lớp 9 Tỉnh Bình Định 2022–2023

Giá Trị Bổ Ích & Lợi Ích Lớn Khi Nghiên Cứu Đề Thi Này

Nghiên cứu bộ đề thi HSG Tin học THCS tỉnh Bình Định 2022 – 2023 mang đến lộ trình phát triển tư duy thuật toán vô cùng vững chắc cho học sinh THCS và các thầy cô huấn luyện đội tuyển:

  • Tối ưu hóa bài toán kiểm tra phạm vi lớn: Học sinh học cách xử lý bài toán tìm kiếm giá trị cực đại trên khoảng số nguyên lên tới 10^7 bằng mảng tần suất và bảng lưu vị trí min/max chỉ với độ phức tạp O(N).

  • Ứng dụng toán hình học tọa độ nguyên vào lập trình: Rèn luyện tư duy vét cạn có định hướng trên hình tròn, biết cách tận dụng tính đối xứng 4 góc phần tư để giảm số lần lặp tính toán diện tích hình chữ nhật.

  • Master tư duy Tham ăn (Greedy) và Chia phần trên chuỗi: Xử lý bài toán phân chia K xâu con liên tiếp bằng cách chia bài toán thành các phần kích thước đều nhau, đưa xâu có thứ tự từ điển lớn nhất về giá trị nhỏ nhất có thể.

  • Tư duy duyệt lưới và tính toán ranh giới: Nắm vững phương pháp duyệt từng ô lưới 2D, kiểm tra sự chênh lệch giá trị giữa 4 ô chung cạnh để tính tổng độ dài đường ranh giới khoanh vùng tự động.

3 Đề Thi [CÓ ĐÁP ÁN] HSG Tin Học Lớp 9 Tỉnh Bình Định 2022–2023

3 Đề Thi [CÓ ĐÁP ÁN] HSG Tin Học Lớp 9 Tỉnh Bình Định 2022–2023

Bài 1: Cặp Số Tương Đồng (SIMILAR.INP / SIMILAR.OUT)

1. Tóm tắt đề bài

Hai số nguyên được gọi là “tương đồng” nếu chúng có tổng các chữ số bằng nhau. Cho hai số nguyên không âm l và r (l, r <= 10^7). Yêu cầu: Tìm hiệu lớn nhất (val2 – val1) của hai số val1, val2 nằm trong đoạn [l, r] sao cho val1 và val2 là hai số tương đồng.

2. Phân tích thuật toán & Độ phức tạp

  • Nhận xét quan trọng:

    • Giá trị l, r <= 10^7. Một số <= 10^7 có tổng các chữ số tối đa là 9 + 9 + 9 + 9 + 9 + 9 + 9 = 63 (đối với số 9.999.999).

    • Do đó, tổng các chữ số của mọi số trong đoạn [l, r] chỉ nhận các giá trị nguyên từ 0 đến 63.

  • Giải pháp tối ưu:

    1. Khởi tạo 2 mảng cố định kích thước 64: min_val (lưu giá trị nhỏ nhất có tổng chữ số S) và max_val (lưu giá trị lớn nhất có tổng chữ số S).

    2. Khởi tạo min_val chứa vô cùng, max_val chứa -1.

    3. Duyệt số x chạy từ l đến r:

      • Tính tổng các chữ số S của x.

      • Cập nhật min_val[S] = min(min_val[S], x).

      • Cập nhật max_val[S] = max(max_val[S], x).

    4. Duyệt qua tất cả các tổng S từ 0 đến 63: nếu max_val[S] > min_val[S], cập nhật hiệu lớn nhất hieu_max = max(hieu_max, max_val[S] - min_val[S]).

  • Độ phức tạp:

    • Thời gian (Time Complexity): O(N * K) với N = r – l + 1 và K <= 7 (số chữ số của x). Tổng số phép tính <= 7 * 10^7, chạy hoàn thành trong khoảng 0.3 – 0.5 giây trong Python.

    • Không gian (Space Complexity): O(1) vì chỉ dùng mảng kích thước cố định 64 phần tử.

3. Lỗi thường gặp & Cách khắc phục

  • Chạy 2 vòng lặp lồng nhau O(N^2): Thử mọi cặp số (val1, val2) trong đoạn [l, r] sẽ khiến chương trình bị TLE ngay lập tức khi r = 10^7.

  • Dùng chuyển đổi chuỗi str(x) để tính tổng chữ số: Trong Python, str(x) tạo ra object chuỗi mới liên tục làm chậm tốc độ. Nên viết hàm tính tổng chữ số bằng phép chia lấy dư % 10 và chia lấy nguyên // 10.

4. Code Python Chuẩn

Python

import sys

# Đọc và ghi file tự động
sys.stdin = open('SIMILAR.INP', 'r')
sys.stdout = open('SIMILAR.OUT', 'w')

du_lieu_vao = sys.stdin.read().split()

if du_lieu_vao:
    l = int(du_lieu_vao[0])
    r = int(du_lieu_vao[1])

    # Hàm tính tổng các chữ số siêu tốc
    def tinh_tong_chu_so(n):
        tong = 0
        while n > 0:
            tong += n % 10
            n //= 10
        return tong

    VO_CUNG = float('inf')
    min_val = [VO_CUNG] * 64
    max_val = [-1] * 64

    for x in range(l, r + 1):
        s = tinh_tong_chu_so(x)
        if x < min_val[s]:
            min_val[s] = x
        if x > max_val[s]:
            max_val[s] = x

    hieu_lon_nhat = 0
    for s in range(64):
        if max_val[s] > min_val[s]:
            hieu_tam = max_val[s] - min_val[s]
            if hieu_tam > hieu_lon_nhat:
                hieu_lon_nhat = hieu_tam

    print(hieu_lon_nhat)

Bài 2: Hình Chữ Nhật Lớn Nhất (DIENTICH.INP / DIENTICH.OUT)

1. Tóm tắt đề bài

Cho bán kính R (R < 10) của đường tròn tâm O(0,0). Tìm diện tích lớn nhất của một hình chữ nhật có các đỉnh mang tọa độ nguyên, nằm trong hoặc nằm trên đường tròn (x^2 + y^2 <= R^2) và các cạnh song song với các trục tọa độ. Nếu không tồn tại hình chữ nhật thỏa mãn, in 0.

2. Phân tích thuật toán & Độ phức tạp

  • Tính chất đối xứng hình học:

    • Do đường tròn tâm O(0,0) và hình chữ nhật có các cạnh song song với trục tọa độ, một hình chữ nhật hợp lệ có thể xác định bởi điểm góc ở góc phần tư thứ nhất có tọa độ (x, y) với x > 0 và y > 0.

    • Các đỉnh tương ứng của hình chữ nhật sẽ là: (x, y), (-x, y), (-x, -y), (x, -y).

    • Tọa độ phải thỏa mãn nằm trong hoặc trên đường tròn: x^2 + y^2 <= R^2.

    • Chiều dài và chiều rộng của hình chữ nhật lần lượt là 2x và 2y.

    • Diện tích hình chữ nhật: S = (2x) * (2y) = 4 * x * y.

  • Giải pháp:

    1. Duyệt tất cả các hoành độ nguyên x từ 1 đến R.

    2. Duyệt tất cả các tung độ nguyên y từ 1 đến R.

    3. Kiểm tra điều kiện x^2 + y^2 <= R^2. Nếu thỏa mãn, tính diện tích S = 4 * x * y và cập nhật giá trị lớn nhất.

  • Độ phức tạp:

    • Thời gian (Time Complexity): O(R^2). Với R < 10, số vòng lặp tối đa không quá 100 phép tính, chạy trong thời gian 0.001 giây.

    • Không gian (Space Complexity): O(1).

3. Lỗi thường gặp & Cách khắc phục

  • Bỏ sót trường hợp R nhỏ (R <= 1): Với R = 1, x^2 + y^2 <= 1 với x >= 1, y >= 1 là 1^2 + 1^2 = 2 > 1 (không thỏa mãn). Do đó không có hình chữ nhật tọa độ nguyên nào nội tiếp được, kết quả phải in ra 0.

  • Nhầm lẫn giữa diện tích và tọa độ thực: Đề bài yêu cầu đỉnh có tọa độ nguyên, không được áp dụng công thức hình chữ nhật nội tiếp đường tròn có diện tích lớn nhất là hình vuông bán kính căn(2)*R (vì đỉnh khi đó có thể không nguyên).

4. Code Python Chuẩn

Python

import sys

sys.stdin = open('DIENTICH.INP', 'r')
sys.stdout = open('DIENTICH.OUT', 'w')

du_lieu_vao = sys.stdin.read().split()

if du_lieu_vao:
    r = int(du_lieu_vao[0])

    dien_tich_lon_nhat = 0

    # Duyệt tọa độ nguyên x, y góc phần tư thứ nhất (x > 0, y > 0)
    for x in range(1, r + 1):
        for y in range(1, r + 1):
            if x * x + y * y <= r * r:
                dien_tich = 4 * x * y
                if dien_tich > dien_tich_lon_nhat:
                    dien_tich_lon_nhat = dien_tich

    print(dien_tich_lon_nhat)

Bài 3: Trò Chơi Xâu Ký Tự (STRGAME.INP / STRGAME.OUT)

1. Tóm tắt đề bài

Cho xâu ký tự S gồm N ký tự tiếng Anh in thường và một số nguyên dương K (1 <= K <= N <= 100). Được phép sắp xếp lại các ký tự trong S thành một xâu mới, sau đó chia xâu mới này thành chính xác K xâu ký tự liên tiếp không rỗng. Yêu cầu: Hãy tìm phương án sắp xếp và chia xâu sao cho xâu ký tự có thứ tự từ điển lớn nhất trong K xâu con đạt giá trị nhỏ nhất có thể, và in ra xâu lớn nhất đó.

2. Phân tích thuật toán & Chiến thuật Tham ăn (Greedy)

Để xâu có thứ tự từ điển lớn nhất trong K xâu là nhỏ nhất có thể, ta cần ưu tiên chia các ký tự nhỏ nhất vào đầu của K xâu.

  1. Bước 1: Sắp xếp xâu gốc theo thứ tự tăng dần từ điển. Giả sử xâu sau khi sắp xếp là S_sort.

  2. Bước 2: Xét ký tự đầu tiên của K xâu con.

    • K xâu con bắt buộc phải nhận K ký tự đầu tiên của S_sort làm ký tự khởi đầu: S_sort[0], S_sort[1], ..., S_sort[K-1].

    • Trường hợp 1: Nếu S_sort[0] != S_sort[K-1]. Do xâu đã sắp xếp, ký tự S_sort[K-1] là ký tự lớn nhất trong nhóm K ký tự đầu. Xâu bắt đầu bằng S_sort[K-1] chắc chắn sẽ là xâu có thứ tự từ điển lớn nhất. Vì mục tiêu là tối thiểu hóa xâu lớn nhất, ta không ghép thêm bất kỳ ký tự nào vào sau S_sort[K-1]. Đáp án chính là S_sort[K-1].

    • Trường hợp 2: Nếu S_sort[0] == S_sort[K-1] (Tất cả K xâu con đều bắt đầu bằng cùng 1 ký tự).

      • Trường hợp 2a: Nếu tất cả các ký tự còn lại từ vị trí K đến N-1 đều giống hệt nhau (ví dụ: các ký tự từ K đến N-1 đều là ‘b’). Để xâu lớn nhất là nhỏ nhất, ta phân phối đều các ký tự còn lại này cho K xâu con. Xâu lớn nhất sẽ nhận được số ký tự nhiều nhất là căn_trên((N - K) / K) ký tự.

      • Trường hợp 2b: Nếu các ký tự còn lại từ vị trí K đến N-1 chứa từ 2 loại ký tự khác nhau trở lên. Ta sẽ dồn toàn bộ phần ký tự còn lại từ K đến N-1 vào sau xâu thứ nhất. Lý do: xâu đầu tiên khi nối thêm phần đuôi đã sắp xếp tăng dần sẽ vẫn có thứ tự từ điển nhỏ hơn việc phân tán ký tự lớn hơn sang các xâu khác. Đáp án là S_sort[0] + S_sort[K:N].

  • Độ phức tạp:

    • Thời gian (Time Complexity): O(N log N) do thao tác sắp xếp xâu ký tự.

    • Không gian (Space Complexity): O(N) để lưu trữ xâu kết quả.

3. Lỗi thường gặp & Cách khắc phục

  • Hiểu sai khái niệm thứ tự từ điển: Xâu “ab” nhỏ hơn xâu “abb”, xâu “aba” nhỏ hơn xâu “b”.

  • Bỏ qua trường hợp chia đều ký tự dư: Khi K xâu đầu tiên bằng nhau và phần còn lại chỉ có 1 loại ký tự độc nhất, nếu dồn hết vào 1 xâu sẽ làm xâu đó dài ra vô ích và làm tăng thứ tự từ điển so với cách chia đều.

4. Code Python Chuẩn

Python

import sys

sys.stdin = open('STRGAME.INP', 'r')
sys.stdout = open('STRGAME.OUT', 'w')

du_lieu_vao = sys.stdin.read().split()

if du_lieu_vao:
    n = int(du_lieu_vao[0])
    k = int(du_lieu_vao[1])
    s = du_lieu_vao[2]

    # Sắp xếp toàn bộ ký tự theo thứ tự từ điển tăng dần
    s_sap_xep = sorted(s)

    # Trường hợp 1: K ký tự đầu tiên không giống nhau hoàn toàn
    if s_sap_xep[0] != s_sap_xep[k - 1]:
        print(s_sap_xep[k - 1])
    else:
        # Trường hợp 2: K ký tự đầu tiên giống hệt nhau
        # Kiểm tra xem các ký tự còn lại từ vị trí k đến n-1 có giống nhau không
        la_giong_nhau_het = True
        for i in range(k, n - 1):
            if s_sap_xep[i] != s_sap_xep[i + 1]:
                la_giong_nhau_het = False
                break

        if la_giong_nhau_het:
            # Chia đều phần còn lại cho K xâu
            so_ky_tu_them = (n - k + k - 1) // k
            ket_qua = s_sap_xep[0] + "".join(s_sap_xep[k:k + so_ky_tu_them])
            print(ket_qua)
        else:
            # Dồn toàn bộ phần còn lại vào xâu đầu tiên
            ket_qua = s_sap_xep[0] + "".join(s_sap_xep[k:])
            print(ket_qua)

Bài 4: Khoanh Vùng Phân Loại (VUONCAY.INP / VUONCAY.OUT)

1. Tóm tắt đề bài

Một mảnh vườn hình chữ nhật kích thước M x N ô đất. Mỗi ô (i, j) được trồng một loại cây mã hóa bằng một số nguyên a[i][j]. Người làm vườn giăng dây ranh giới quanh chu vi mảnh vườn và giữa các ô chung cạnh nếu 2 ô đó trồng hai loại cây khác nhau. Yêu cầu: Tính tổng độ dài dây cần dùng để khoanh vùng các loại cây.

2. Phân tích thuật toán & Độ phức tạp

Độ dài dây cần giăng bao gồm 3 thành phần chính:

  1. Dây bao quanh chu vi ngoài cùng của mảnh vườn:

    • Chu vi = 2 * (M + N).

  2. Dây giăng theo các cạnh dọc bên trong:

    • Xét từng hàng i từ 0 đến M-1, với mọi cặp ô kề nhau theo chiều ngang (j và j+1):

    • Nếu a[i][j] != a[i][j+1], cộng thêm 1 đơn vị độ dài dây.

  3. Dây giăng theo các cạnh ngang bên trong:

    • Xét từng cột j từ 0 đến N-1, với mọi cặp ô kề nhau theo chiều dọc (i và i+1):

    • Nếu a[i][j] != a[i+1][j], cộng thêm 1 đơn vị độ dài dây.

  • Tổng chiều dài dây = Chu vi ngoài + Dây dọc bên trong + Dây ngang bên trong.

  • Độ phức tạp:

    • Thời gian (Time Complexity): O(M * N). Với M, N < 100, số ô tối đa là 10.000, thời gian tính toán chưa tới 0.01 giây.

    • Không gian (Space Complexity): O(M * N) để lưu ma trận vườn cây.

3. Lỗi thường gặp & Cách khắc phục

  • Đếm lặp dây ranh giới: Căng dây giữa ô A và ô B chỉ tính 1 lần cho cạnh chung của chúng. Việc duyệt theo hướng cố định (trái sang phải, trên xuống dưới) giúp tránh bị đếm trùng lặp.

  • Quên tính chu vi ngoài mảnh vườn: Đề bài ghi rõ “Dây được căng xung quanh mảnh vườn và cạnh của ô nếu 2 ô chứa cạnh đó ươm hai loại cây khác nhau”. Cần cộng thêm 2*(M + N) vào kết quả final.

4. Code Python Chuẩn

Python

import sys

sys.stdin = open('VUONCAY.INP', 'r')
sys.stdout = open('VUONCAY.OUT', 'w')

du_lieu_vao = sys.stdin.read().split()

if du_lieu_vao:
    m = int(du_lieu_vao[0])
    n = int(du_lieu_vao[1])

    idx = 2
    luoi_cay = []
    for i in range(m):
        hang = []
        for j in range(n):
            hang.append(int(du_lieu_vao[idx]))
            idx += 1
        luoi_cay.append(hang)

    # 1. Chu vi bên ngoài mảnh vườn
    chu_vi_ngoai = 2 * (m + n)

    # 2. Đếm dây dọc bên trong (giữa cột j và cột j+1)
    day_doc_inside = 0
    for i in range(m):
        for j in range(n - 1):
            if luoi_cay[i][j] != luoi_cay[i][j + 1]:
                day_doc_inside += 1

    # 3. Đếm dây ngang bên trong (giữa hàng i và hàng i+1)
    day_ngang_inside = 0
    for i in range(m - 1):
        for j in range(n):
            if luoi_cay[i][j] != luoi_cay[i + 1][j]:
                day_ngang_inside += 1

    # Tổng độ dài dây cần dùng
    tong_chieu_dai_day = chu_vi_ngoai + day_doc_inside + day_ngang_inside

    print(tong_chieu_dai_day)

Câu Hỏi Thường Gặp (FAQ)

Tại sao lại dùng mảng cố định 64 phần tử ở Bài 1?

Một số <= 10^7 có nhiều nhất 7 chữ số. Tổng chữ số lớn nhất có thể đạt được là 9 * 7 = 63. Do đó mảng có kích thước 64 (chỉ số từ 0 đến 63) cover đủ mọi tổng chữ số có thể xuất hiện, giúp truy cập vị trí min/max với tốc độ cực nhanh O(1).

Làm thế nào để giải các bài toán ma trận lưới 2D không bị vượt quá thời gian (TLE) trong Python?

Thay vì dùng các hàm tìm kiếm phức tạp, hãy đọc toàn bộ file đầu vào bằng sys.stdin.read().split(), phẳng hóa dữ liệu đầu vào rồi nạp vào ma trận 2D bằng List Comprehension để tối ưu bộ nhớ và thời gian chạy.

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

Vui lòng Chấm điểm 5 sao trang cho bài viết hay !

 

 

2 Khóa Học Tin Học Online Thầy Dân Luyện Thi Chuyên Tin Tin Văn Phòng Cấp Tốc

2 Khóa Học Tin Học Online Thầy Dân Luyện Thi Chuyên Tin Tin Văn Phòng Cấp Tốc

📞 Thông Tin Liên Hệ:

  • Website: vitinhtandan.com

  • Hotline/Zalo: (0937.179.278)

  • Địa chỉ: (Tổ 5, Ấp Tân Lược 1, xã Tân Hương, Đồng Tháp)

Chúc các bạn học sinh ôn luyện thật tốt và đạt kết quả cao nhất trong kỳ thi Học sinh giỏi Tin học lớp 9 sắp tới!

SEO Keywords

giải đề thi hsg tin học lớp 9, đề thi hsg tin học bình định 2022 2023, giải bài toán cặp số tương đồng python, diện tích hình chữ nhật lớn nhất đường tròn python, trò chơi xâu ký tự hsg tin, khoanh vùng phân loại vườn cây python

Hashtags

#HSGTinHoc #PythonHSG #LuyenThiTinHoc #GiaiDeTinHoc #LapTrinhPython #GreedyAlgorithm #Matrix2D

 

2 Đề Thi & Đáp Án HSG Tin Học Lớp 9 Tỉnh Bình Định 2021–2022

Hướng Dẫn Giải Chi Tiết Đề Thi HSG Tin Học Lớp 9 Tỉnh Bình Định (Năm Học 2021 – 2022) Bằng Python

Kỳ thi Học sinh giỏi (HSG) Tin học THCS tỉnh Bình Định năm học 2021 – 2022 mang đến cấu trúc đề thi đa dạng, đi từ lý thuyết Số học, thuật toán Tham ăn (Greedy), kỹ thuật Quay đúp / Chia đôi tập dữ liệu (Meet-in-the-middle) cho đến thuật toán Loang đồ thị (BFS). Bài viết này sẽ phân tích chi tiết lời giải 4 bài toán bằng Python, ứng dụng kỹ thuật I/O siêu tốc với sys.stdin, đồng thời chỉ ra các lỗi sai dễ mắc phải giúp học sinh tối ưu điểm số.

Trọn bộ các đề bao gồm các bí quyết thuật toán hay nhất chuẩn bị thi HSG Tin Học các Tỉnh:

2 Đề Thi & Đáp Án HSG Tin Học Lớp 9 Tỉnh Bình Định 2021 – 2022

2 Đề Thi & Đáp Án HSG Tin Học Lớp 9 Tỉnh Bình Định 2021 – 2022

2 Đề Thi & Đáp Án HSG Tin Học Lớp 9 Tỉnh Bình Định 2021 – 2022

2 Đề Thi & Đáp Án HSG Tin Học Lớp 9 Tỉnh Bình Định 2021 – 2022

2 Đề Thi & Đáp Án HSG Tin Học Lớp 9 Tỉnh Bình Định 2021 – 2022

2 Đề Thi & Đáp Án HSG Tin Học Lớp 9 Tỉnh Bình Định 2021 – 2022

Giá Trị Bổ Ích & Lợi Ích Lớn Khi Nghiên Cứu Đề Thi Này

Nghiên cứu bộ đề thi HSG Tin học THCS tỉnh Bình Định mang lại nhiều lợi ích quan trọng cho học sinh và phụ huynh định hướng chuyên Tin:

  • Làm chủ tư duy Số học căn bản: Học sinh hiểu rõ bản chất của một số có 3 ước nguyên dương thực chất là bình phương của một số nguyên tố (p^2), từ đó áp dụng thuật toán Sàng số nguyên tố Eratosthenes để giải quyết triệt me.

  • Thành thạo chiến lược Tham ăn (Greedy Strategy): Bài toán sắp xếp thời gian phát nhạc rèn luyện tư duy tối ưu tổng thời gian chờ (đưa các bài hát có thời lượng ngắn lên trước).

  • Nắm vững kỹ thuật nâng cao “Chia đôi tập dữ liệu” (Meet-in-the-middle): Bài toán chọn số với N <= 40 giúp học sinh vượt qua rào cản của thuật toán quay đúp thông thường O(2^N) để rút gọn thời gian tính toán xuống O(2^(N/2)).

  • Thành thạo thuật toán BFS tìm đường đi ngắn nhất: Học sinh nắm chắc kỹ thuật duyệt theo chiều rộng (BFS) trên lưới ô vuông để tìm lối thoát ngắn nhất và truy vết đường đi thực tế.

2 Đề Thi & Đáp Án HSG Tin Học Lớp 9 Tỉnh Bình Định 2021 – 2022

2 Đề Thi & Đáp Án HSG Tin Học Lớp 9 Tỉnh Bình Định 2021 – 2022

Bài 1: Số Có Ba Ước Nguyên Dương (BAUOC.INP / BAUOC.OUT)

1. Tóm tắt đề bài

Cho số nguyên dương N. Đếm số lượng các số tự nhiên <= N có đúng 3 ước số nguyên dương phân biệt.

2. Phân tích thuật toán & Độ phức tạp

  • Tính chất số học: Một số nguyên dương X có đúng 3 ước số phân biệt (1, p, X) khi và chỉ khi X = p^2, trong đó p là một số nguyên tố.

  • Giải pháp:

    1. Yêu cầu X <= N tương đương p^2 <= N hay p <= căn bậc hai của N.

    2. Sử dụng thuật toán Sàng số nguyên tố (Sieve of Eratosthenes) đếm các số nguyên tố p <= căn bậc hai của N.

    3. Số lượng số nguyên tố p <= căn bậc hai của N chính là số lượng số có đúng 3 ước số <= N.

  • Độ phức tạp:

    • Thời gian (Time Complexity): O(căn(N) * log(log(căn(N)))). Rất nhanh, chạy dưới 0.1 giây ngay cả với N = 10^12.

    • Không gian (Space Complexity): O(căn(N)) để lưu trữ mảng đánh dấu sàng số nguyên tố.

3. Lỗi thường gặp & Cách khắc phục

  • Duyệt trâu đếm ước: Duyệt từng số từ 1 đến N rồi đếm số ước của từng số sẽ làm thuật toán rơi vào O(N * căn(N)), dẫn đến lỗi quá thời gian (TLE).

  • Tràn bộ nhớ: Nhầm lẫn khởi tạo mảng sàng kích thước N thay vì căn bậc hai của N. Với N lớn, mảng kích thước N sẽ làm tràn bộ nhớ (Memory Limit Exceeded).

4. Code Python Chuẩn

Python

import sys

# Đọc và ghi file tự động
sys.stdin = open('BAUOC.INP', 'r')
sys.stdout = open('BAUOC.OUT', 'w')

du_lieu_vao = sys.stdin.read().split()

if du_lieu_vao:
    n = int(du_lieu_vao[0])
    
    # Tính căn bậc hai của N
    gioi_han_p = int(n ** 0.5)
    
    if gioi_han_p < 2:
        print(0)
    else:
        # Sàng số nguyên tố từ 2 đến gioi_han_p
        la_nguyen_to = [True] * (gioi_han_p + 1)
        la_nguyen_to[0] = la_nguyen_to[1] = False
        
        for i in range(2, int(gioi_han_p ** 0.5) + 1):
            if la_nguyen_to[i]:
                for j in range(i * i, gioi_han_p + 1, i):
                    la_nguyen_to[j] = False
                    
        dem_so_nguyen_to = sum(1 for i in range(2, gioi_han_p + 1) if la_nguyen_to[i])
        print(dem_so_nguyen_to)

Bài 2: Nghe Nhạc (NHAC.INP / NHAC.OUT)

1. Tóm tắt đề bài

Có N bài hát với thời lượng lần lượt là d1, d2, …, dN phút (mã số ban đầu từ 1 đến N). Máy phát quay băng từ đầu để phát bài thứ i. Giả sử tần suất nghe các bài hát là như nhau, tìm thứ tự ghi các bài hát lên băng sao cho tổng thời gian quay băng trong ngày là ít nhất.

2. Phân tích thuật toán & Độ phức tạp

  • Thời gian quay băng đến bài thứ k trên băng: Nếu thứ tự sắp xếp bài hát trên băng có thời lượng là t1, t2, …, tN, thì thời gian tìm và phát bài thứ k là S_k = t1 + t2 + … + tk.

  • Tổng thời gian quay băng: T = S1 + S2 + … + SN = (N)*t1 + (N-1)t2 + … + 1tN.

  • Chiến thuật Tham ăn (Greedy): Để T nhỏ nhất, các bài hát có thời lượng t_i nhỏ hơn phải được xếp trước (nhân với hệ số lớn hơn). Do đó, ta chỉ cần sắp xếp các bài hát theo thời lượng tăng dần.

  • Độ phức tạp:

    • Thời gian (Time Complexity): O(N log N) do thao tác sắp xếp mảng N phần tử.

    • Không gian (Space Complexity): O(N) để lưu mảng danh sách bài hát và thời gian dồn.

3. Lỗi thường gặp & Cách khắc phục

  • Quên lưu vết chỉ số ban đầu: Đề bài yêu cầu in ra mã số ban đầu của bài hát. Do đó cần lưu cặp (thời_lượng, mã_số_gốc) trước khi thực hiện sắp xếp.

  • Tính sai thời gian phát dồn: Dòng thứ i cần in ra thời gian quay băng S_i để tìm tới bài đó, chứ không phải chỉ in thời lượng gốc của riêng bài đó.

4. Code Python Chuẩn

Python

import sys

sys.stdin = open('NHAC.INP', 'r')
sys.stdout = open('NHAC.OUT', 'w')

du_lieu_vao = sys.stdin.read().split()

if du_lieu_vao:
    n = int(du_lieu_vao[0])
    thoi_luong = [int(x) for x in du_lieu_vao[1:n+1]]
    
    # Lưu cặp (thời lượng, mã số gốc 1-indexed)
    danh_sach_bai = []
    for i in range(n):
        danh_sach_bai.append((thoi_luong[i], i + 1))
        
    # Sắp xếp thời lượng tăng dần
    danh_sach_bai.sort(key=lambda x: x[0])
    
    tong_thoi_gian_ngay = 0
    thoi_gian_quay_don = 0
    
    ket_qua_bai = []
    for thoi_luong_bai, ma_so in danh_sach_bai:
        thoi_gian_quay_don += thoi_luong_bai
        tong_thoi_gian_ngay += thoi_gian_quay_don
        ket_qua_bai.append((ma_so, thoi_gian_quay_don))
        
    # In ra N dòng kết quả bài hát
    for ma_so, t_quay in ket_qua_bai:
        print(f"{ma_so} {t_quay}")
        
    # In tổng thời gian quay băng trong ngày
    print(tong_thoi_gian_ngay)

Bài 3: Chọn Số (CHONSO.INP / CHONSO.OUT)

1. Tóm tắt đề bài

Cho dãy số nguyên a1, a2, …, an và số nguyên M (5 <= n <= 40). Tìm dãy bit t1, t2, …, tn thuộc {0, 1} sao cho t1a1 + t2a2 + … + tn*an = M. Đề bài đảm bảo có nghiệm duy nhất.

2. Phân tích thuật toán & Độ phức tạp

  • Nhận xét giới hạn: n <= 40. Thuật toán Quay lui (Backtracking) thử mọi trường hợp 2^40 xấp xỉ 10^12 sẽ bị TLE.

  • Kỹ thuật Chia đôi tập dữ liệu (Meet-in-the-middle):

    1. Chia dãy a thành 2 nửa: nửa đầu N1 = n // 2 phần tử, nửa sau N2 = n – N1 phần tử.

    2. Sinh tất cả các tổng có thể tạo ra từ nửa đầu (2^N1 <= 2^20 xấp xỉ 10^6), lưu dưới dạng dictionary: tong_x -> chuoi_bit.

    3. Sinh các tổng từ nửa sau. Với mỗi tong_y tạo ra từ nửa sau, kiểm tra xem M – tong_y có tồn tại trong dictionary của nửa đầu hay không.

    4. Nếu tìm thấy, ghép chuỗi bit nửa đầu và nửa sau lại để thu được dãy bit kết quả.

  • Độ phức tạp:

    • Thời gian (Time Complexity): O(2^(N/2)). Với n = 40, 2^20 xấp xỉ 10^6 phép tính, chạy trong chưa đầy 0.3 giây.

    • Không gian (Space Complexity): O(2^(N/2)) để lưu dictionary nửa đầu.

3. Lỗi thường gặp & Cách khắc phục

  • Dùng mảng/list để tìm kiếm: Thay vì dùng dict hay hashmap có tốc độ tìm kiếm O(1), việc dùng list khiến độ phức tạp tăng lên O(2^(N/2) * 2^(N/2)) = O(2^N), làm mất tác dụng của thuật toán Meet-in-the-middle.

  • Sai thứ tự chuỗi bit: Cần chú ý giữ đúng vị trí chỉ số gốc của các phần tử khi chia đôi mảng.

4. Code Python Chuẩn

Python

import sys

sys.stdin = open('CHONSO.INP', 'r')
sys.stdout = open('CHONSO.OUT', 'w')

du_lieu_vao = sys.stdin.read().split()

if du_lieu_vao:
    n = int(du_lieu_vao[0])
    a = [int(x) for x in du_lieu_vao[1:n+1]]
    m = int(du_lieu_vao[n+1])
    
    n1 = n // 2
    n2 = n - n1
    
    a1 = a[:n1]
    a2 = a[n1:]
    
    # Sinh nửa đầu
    tap_nua_dau = {}
    for mask in range(1 << n1):
        tong_tam = 0
        bit_list = []
        for i in range(n1):
            if (mask >> i) & 1:
                tong_tam += a1[i]
                bit_list.append('1')
            else:
                bit_list.append('0')
        tap_nua_dau[tong_tam] = "".join(bit_list)
        
    # Sinh nửa sau và đối chiếu
    ket_qua = ""
    for mask in range(1 << n2):
        tong_tam = 0
        bit_list = []
        for i in range(n2):
            if (mask >> i) & 1:
                tong_tam += a2[i]
                bit_list.append('1')
            else:
                bit_list.append('0')
                
        can_tim = m - tong_tam
        if can_tim in tap_nua_dau:
            ket_qua = tap_nua_dau[can_tim] + "".join(bit_list)
            break
            
    print(ket_qua)

Bài 4: Rừng Nguy Hiểm (RUNG.INP / RUNG.OUT)

1. Tóm tắt đề bài

Một con hổ ở vị trí (x, y) trong khu rừng hình vuông N x N gồm các ô 0 (đi được) và 1 (chướng ngại vật/nguy hiểm). Mỗi bước hổ nhảy sang 1 trong 4 ô chung cạnh có địa hình cùng tính chất (cùng giá trị 0 hoặc 1 với ô đang đứng). Hổ thoát khỏi khu rừng khi di chuyển ra tới một ô nằm trên biên của lưới N x N. Yêu cầu: Tìm số bước ngắn nhất và in tọa độ đường đi để hổ thoát ra ngoài. Nếu không thoát được, in 0.

2. Phân tích thuật toán & Độ phức tạp

  • Thuật toán Duyệt theo chiều rộng (BFS): BFS là lựa chọn tối ưu tuyệt đối để tìm đường đi ngắn nhất trên đồ thị lưới không trọng số.

  • Quy trình thực hiện:

    1. Nếu vị trí xuất phát (x, y) đã nằm trên biên khu rừng, số bước ngắn nhất là 1 (chính vị trí đó).

    2. Khởi tạo hàng đợi queue chứa tọa độ điểm bắt đầu, mảng truy_vet[r][c] lưu ô cha và mảng khoang_cach[r][c].

    3. Duyệt 4 hướng (Đông, Tây, Nam, Bắc). Bước đi hợp lệ khi ô tiếp theo nằm trong bảng, chưa thăm, và có giá trị ô trùng với ô xuất phát (ma_tran[r_moi][c_moi] == ma_tran[x][y]).

    4. Khi chạm tới một ô nằm trên biên (r = 1 hoặc r = N hoặc c = 1 hoặc c = N), dừng BFS và quay ngược mảng truy_vet để thu được đường đi.

  • Độ phức tạp:

    • Thời gian (Time Complexity): O(N^2) vì mỗi ô trong lưới N x N chỉ được đưa vào hàng đợi BFS tối đa một lần. Với N <= 50, số phép tính chưa tới 2,500, chạy ngay lập tức.

    • Không gian (Space Complexity): O(N^2) để lưu ma trận và mảng truy vết.

3. Lỗi thường gặp & Cách khắc phục

  • Nhầm lẫn hệ tọa độ (1-based vs 0-based): Đề bài dùng tọa độ dòng/cột từ 1 đến N. Cần chuyển đổi tương thích trong code để tránh lỗi lệch chỉ số.

  • Quên điều kiện cùng loại địa hình: Đề bài ghi rõ “ô có cùng tính chất địa hình (giá trị) với ô nó đang đứng”. Quên điều kiện này sẽ dẫn đến kết quả tìm đường sai.

4. Code Python Chuẩn

Python

import sys
from collections import deque

sys.stdin = open('RUNG.INP', 'r')
sys.stdout = open('RUNG.OUT', 'w')

du_lieu_vao = sys.stdin.read().split()

if du_lieu_vao:
    n = int(du_lieu_vao[0])
    x_bd = int(du_lieu_vao[1]) - 1  # Chuyển về 0-indexed
    y_bd = int(du_lieu_vao[2]) - 1
    
    idx = 3
    luoi = []
    for i in range(n):
        hang = []
        for j in range(n):
            hang.append(int(du_lieu_vao[idx]))
            idx += 1
        luoi.append(hang)
        
    gia_tri_goc = luoi[x_bd][y_bd]
    
    # Các hướng di chuyển: Đông, Tây, Nam, Bắc
    dx = [0, 0, 1, -1]
    dy = [1, -1, 0, 0]
    
    vong_lap_bfs = deque([(x_bd, y_bd)])
    truy_vet = {}
    truy_vet[(x_bd, y_bd)] = None
    
    o_dich = None
    
    # Kiểm tra ngay nếu điểm bắt đầu đã ở biên
    if x_bd == 0 or x_bd == n - 1 or y_bd == 0 or y_bd == n - 1:
        o_dich = (x_bd, y_bd)
    else:
        while vong_lap_bfs:
            r, c = vong_lap_bfs.popleft()
            
            if r == 0 or r == n - 1 or c == 0 or c == n - 1:
                o_dich = (r, c)
                break
                
            for k in range(4):
                nr, nc = r + dx[k], c + dy[k]
                if 0 <= nr < n and 0 <= nc < n:
                    if (nr, nc) not in truy_vet and luoi[nr][nc] == gia_tri_goc:
                        truy_vet[(nr, nc)] = (r, c)
                        vong_lap_bfs.append((nr, nc))
                        
    if o_dich is None:
        print(0)
    else:
        # Reconstruct đường đi
        duong_di = []
        hien_tai = o_dich
        while hien_tai is not None:
            duong_di.append(hien_tai)
            hien_tai = truy_vet[hien_tai]
            
        duong_di.reverse()
        
        print(1)
        print(len(duong_di))
        for r, c in duong_di:
            print(f"{r + 1} {c + 1}")

Câu Hỏi Thường Gặp (FAQ)

Làm sao để biết khi nào dùng thuật toán Sàng Eratosthenes hay duyệt kiểm tra số nguyên tố?

Khi bài toán yêu cầu đếm hoặc xử lý các số nguyên tố trong phạm vi liên tục lên đến 10^6 hoặc 10^7, hãy luôn dùng Sàng Eratosthenes. Duyệt kiểm tra từng số chỉ phù hợp khi số lượng truy vấn nhỏ hoặc giá trị N cực lớn không thể lưu mảng.

Kỹ thuật Meet-in-the-middle có thể áp dụng cho các dạng bài nào?

Kỹ thuật này áp dụng hiệu quả cho các bài toán kết hợp tập hợp, chọn tập con có tổng bằng M, hoặc tìm chuỗi thao tác ngắn nhất mà N nằm trong khoảng 30 đến 40.

giải đề thi hsg tin học lớp 9, đề thi hsg tin học bình định, sàng số nguyên tố python, tham ăn greedy python, meet in the middle python, bfs tìm đường đi ngắn nhất python

Hashtags

#HSGTinHoc #PythonHSG #LuyenThiTinHoc #GiaiDeTinHoc #LapTrinhPython #BFS #MeetInTheMiddle

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

Vui lòng Chấm điểm 5 sao trang cho bài viết hay !

 

 

2 Khóa Học Tin Học Online Thầy Dân Luyện Thi Chuyên Tin Tin Văn Phòng Cấp Tốc

2 Khóa Học Tin Học Online Thầy Dân Luyện Thi Chuyên Tin Tin Văn Phòng Cấp Tốc

📞 Thông Tin Liên Hệ:

  • Website: vitinhtandan.com

  • Hotline/Zalo: (0937.179.278)

  • Địa chỉ: (Tổ 5, Ấp Tân Lược 1, xã Tân Hương, Đồng Tháp)

Chúc các bạn học sinh ôn luyện thật tốt và đạt kết quả cao nhất trong kỳ thi Học sinh giỏi Tin học lớp 9 sắp tới!

Bộ 21 Đề Thi HSG Tin Học Lớp 9 Đồng Tháp 2026 – 2027 (Có Đáp Án)

Kỳ thi Học sinh giỏi (HSG) Tin học lớp 9 cấp xã và tỉnh luôn là một trong những thử thách lớn đối với các bạn học sinh đam mê lập trình và thuật toán. Để đạt được thành tích cao, việc luyện đề và cọ xát với các dạng bài thi thực tế từ các năm trước là phương pháp ôn luyện vô cùng hiệu quả.

Nhằm đồng hành cùng các bạn học sinh và quý thầy cô trên địa bàn tỉnh, Vi Tính Tấn Dân xin chia sẻ Bộ 21 Đề thi HSG Tin học lớp 9 Đồng Tháp năm học 2026 – 2027 (Kèm đáp án và hướng dẫn giải chi tiết).

📌 Tổng Quan Tệp Tài Liệu Đề Thi HSG Tin Học Lớp 9 Đồng Tháp

Bộ tài liệu được sưu tầm, tuyển chọn và biên soạn kỹ lưỡng, bám sát cấu trúc đề thi chính thức của Sở GD&ĐT Tỉnh Đồng Tháp qua các kỳ thi gần đây.

Thông Tin Tài Liệu Chi Tiết
Môn thi Tin học (Khối 9)
Khu vực Tỉnh Đồng Tháp
Năm học 2026 – 2027
Số lượng 21 Đề thi hoàn chỉnh
Định dạng File PDF / Word (Dễ dàng tải & in ấn)
Đính kèm Đáp án, Test case & Code mẫu (Pascal / C++ / Python)

Bộ 21 Đề Thi HSG Tin Học Lớp 9 Đồng Tháp 2026 – 2027 (Có Đáp Án)

Bộ 21 Đề Thi HSG Tin Học Lớp 9 Đồng Tháp 2026 – 2027 (Có Đáp Án)

Bộ 21 Đề Thi HSG Tin Học Lớp 9 Đồng Tháp 2026 – 2027 (Có Đáp Án)

Bộ 21 Đề Thi HSG Tin Học Lớp 9 Đồng Tháp 2026 – 2027 (Có Đáp Án)

Bộ 21 Đề Thi HSG Tin Học Lớp 9 Đồng Tháp 2026 – 2027 (Có Đáp Án)

Bộ 21 Đề Thi HSG Tin Học Lớp 9 Đồng Tháp 2026 – 2027 (Có Đáp Án)

Đáp án đề thi HSG Tin học lớp 9 cấp thị xã Gò Công:

Đây là một đề HSG THCS khá hay, gồm 5 bài với mức độ từ cơ bản → vận dụng. Mình sẽ phân tích từng bài theo đúng phong cách luyện HSG:

  • Ý tưởng
  • Thuật toán
  • Độ phức tạp
  • Lưu ý dễ sai
  • Code Python dùng sys.stdin=open(...)
  • Giải thích từng dòng

Đáp Án Bài 1: DAY – Ngày lắng nghe:

Đề bài

Cho một ngày dạng

dd/mm
So sánh với
14/02
In ra
BEFORE
nếu trước
AFTER
nếu sau
EXACTLY
nếu đúng.

Phân tích

Ví dụ

15/01
Ngày 15 tháng 1

thì

15/1 < 14/2
=> BEFORE

Ví dụ

01/03
tháng 3

lớn hơn tháng 2

=> AFTER


Ý tưởng

Có hai trường hợp

Nếu tháng nhỏ hơn 2

BEFORE
Nếu tháng lớn hơn 2
AFTER
Nếu tháng bằng 2

So tiếp ngày.

day<14
BEFORE
day==14
EXACTLY
day>14
AFTER

Thuật toán

Đọc chuỗi
Tách ngày và tháng
Nếu month<2
      BEFORE
Nếu month>2
      AFTER
Nếu month==2
      day<14
            BEFORE
      day==14
            EXACTLY
      day>14
            AFTER

Độ phức tạp

Đọc đúng 1 lần

O(1)
Bộ nhớ
O(1)
Nhanh gần như tức thì.

Code Python

import sys
sys.stdin = open("DAY.INP", "r")
sys.stdout = open("DAY.OUT", "w")
s = input()
ngay, thang = map(int, s.split("/"))
if thang < 2:
    print("BEFORE")
elif thang > 2:
    print("AFTER")
else:
    if ngay < 14:
        print("BEFORE")
    elif ngay == 14:
        print("EXACTLY")
    else:
        print("AFTER")

Chú ý

Nhiều bạn so sánh

dd/mm
dưới dạng chuỗi

Ví dụ

9/2
14/2
sẽ sai.

Phải chuyển sang số nguyên.


Đáp Án Bài 2: SUNFLOWER


Đề

Có n bông hoa.

Hoa đặc biệt nếu số hạt là số nguyên tố.

Đếm có bao nhiêu hoa đặc biệt.

1≤n≤10000

ai≤10^12

Phân tích

Ví dụ

1 4 3
chỉ có
3
là nguyên tố.

Đáp án

1

Khó ở đâu?

ai≤10^12
Không thể sàng Eratosthenes.

Ta phải kiểm tra nguyên tố từng số.


Kiểm tra nguyên tố

Một số nguyên tố chỉ cần thử đến

√n
Ví dụ
97
√97≈9

chỉ thử

2
3
5
7
là đủ.

Thuật toán kiểm tra

Nếu

n<2
không nguyên tố.

Nếu

2
nguyên tố.

Nếu

chia hết cho 2
không nguyên tố.

Sau đó

3
5
7
9
11
...
tăng
2
đến
√n
Nếu chia hết

không nguyên tố.

Ngược lại

nguyên tố.


Vì sao đúng?

Nếu

n=a×b
thì luôn tồn tại
a≤√n
nên chỉ cần thử tới căn.

Thuật toán

ans=0
lặp qua từng ai
      nếu nguyên tố
             ans+=1
in ans

Độ phức tạp

Giả sử

M=max(ai)
Mỗi số
O(√M)
Ở đây
√10^12=10^6
Nên
O(n√M)
Trong thực tế rất nhanh vì:
  • gặp ước sẽ dừng sớm
  • nhiều số chẵn
  • n chỉ 10000

Code Python

 
import sys
import math

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


def nguyen_to(x):
    if x < 2:
        return False

    if x == 2:
        return True

    if x % 2 == 0:
        return False

    i = 3

    while i <= math.isqrt(x):
        if x % i == 0:
            return False
        i += 2

    return True


n = int(input())

a = list(map(int, input().split()))

dem = 0

for x in a:
    if nguyen_to(x):
        dem += 1

print(dem)
 

Vì sao dùng math.isqrt()

Thay vì

int(math.sqrt(x))
ta dùng
math.isqrt(x)
Ưu điểm
  • Chính xác với số rất lớn.
  • Không bị sai số số thực.
  • Nhanh hơn.

Các lỗi thường gặp

Sai 1

1
không phải số nguyên tố.

Sai 2

Quên xét

2

Sai 3

Thử đến

n
thay vì
√n
→ quá chậm.

Sai 4

Dùng

for i in range(2, x):
với
10^12
sẽ không chạy được.

Tổng kết

Bài Thuật toán Độ phức tạp Độ khó
DAY So sánh ngày, tháng O(1) ★☆☆☆☆
SUNFLOWER Kiểm tra số nguyên tố đến √n O(n√M) ★★☆☆☆

Đáp Án Bài 3: ROBOT (4 điểm)


Đề bài

Có

  • n cây
  • vị trí robot là p
  • pin đủ đi được k đơn vị chỉ từ trái sang phải

Có n cây tại các vị trí

a1 < a2 < ... < an
Đếm xem robot thu hoạch được bao nhiêu cây.

Ví dụ

4 3 4

2 5 6 9
Robot

ở vị trí

3
đi được
4
đơn vị

nên tới

7
Các cây nằm trong đoạn
[3 ; 7]
là
5
6
=> đáp án
2

Phân tích

Robot KHÔNG quay lại.

Robot chỉ đi

p → p+k
Vậy cây được thu hoạch khi
p ≤ ai ≤ p+k
Bài toán trở thành:

Đếm bao nhiêu số nằm trong đoạn [L,R].


Ý tưởng 1 (dễ hiểu)

Duyệt toàn bộ mảng.

Nếu

p<=ai<=p+k
thì
dem+=1

Thuật toán

 
Đọc dữ liệu

dem=0

For mỗi cây

    nếu p<=ai<=p+k

          dem++

In dem
 

Độ phức tạp

Có

n≤10^6

Chỉ duyệt đúng một lần.

Thời gian

O(n)

Bộ nhớ

O(n)

(vì lưu mảng)

Nếu đọc từng số cũng chỉ O(1) bộ nhớ.


Vì sao đúng?

Mỗi cây chỉ có hai khả năng

  • nằm trong đoạn
  • không nằm trong đoạn

Duyệt hết một lần sẽ không bỏ sót.


Code Python

 
import sys
sys.stdin = open("ROBOT.INP", "r")
sys.stdout = open("ROBOT.OUT", "w")
n, p, k = map(int, input().split())
a = list(map(int, input().split()))
dem = 0
for x in a:
    if p <= x <= p + k:
        dem += 1
print(dem)


Nếu muốn nhanh hơn?

Do dãy đã tăng dần

Có thể dùng

binary search

tìm

  • vị trí đầu tiên ≥ p
  • vị trí cuối cùng ≤ p+k

Độ phức tạp

O(log n)

nhưng đề này O(n) đã đủ.


Các lỗi thường gặp

Sai

if x>p and x<p+k

Sẽ bỏ mất cây ở

p

hoặc

p+k

Phải là

if p<=x<=p+k


Đáp Án Bài 4: LAVENDER


Đề

Có

m dòng

n cột

Ma trận

Đếm số phần tử

>=T

Ví dụ

2 3 50

10 12 50

44 60 55

Có

50

60

55

=>3


Phân tích

Không yêu cầu tìm vị trí.

Không yêu cầu sắp xếp.

Chỉ cần đếm.


Ý tưởng

Đọc từng số

Nếu

>=T

thì tăng biến đếm.


Thuật toán

Đọc
m n T
dem=0
Lặp m lần
      đọc một dòng
      duyệt n số
            nếu >=T
                  dem++
In dem

Độ phức tạp

Có

m,n≤1000
Nhiều nhất
10^6
phần tử.

Thời gian

O(mn)
Bộ nhớ
O(n)
vì chỉ lưu từng dòng.

Vì sao đúng?

Mỗi phần tử được xét đúng một lần.

Không bỏ sót.


Code

 
import sys

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

m, n, T = map(int, input().split())

dem = 0

for _ in range(m):

    dong = list(map(int, input().split()))

    for x in dong:

        if x >= T:
            dem += 1

print(dem)

Tối ưu bộ nhớ

Không cần

a=[]
vì đề không yêu cầu dùng lại.

Đọc từng dòng là tốt nhất.


Lỗi thường gặp

Viết

if x>T
sai.

Đề là

>=T

Đáp Án Bài 5: ESSENCE


Đề

Cho chuỗi

Ví dụ

ABCCDZDC

Độ đậm đặc

=

số lần xuất hiện nhiều nhất của một ký tự.

Ví dụ

A :1

B :1

C :3

D :2

Z :1

Đáp án

3

Phân tích

Đây chính là

tần số lớn nhất.


Cách 1 (đơn giản)

Dùng Dictionary.


Ý tưởng

Duyệt chuỗi.

Nếu ký tự chưa có

thêm vào.

Nếu có

tăng lên 1.

Sau đó lấy giá trị lớn nhất.


Thuật toán


Đọc chuỗi

Dictionary rỗng

For ký tự

      tăng số lần xuất hiện

In max(dictionary.values())

Độ phức tạp

Chuỗi dài

1000
Thời gian
O(n)
Bộ nhớ
O(26)
vì chỉ có chữ cái tiếng Anh in hoa.

Vì sao đúng?

Dictionary lưu đúng số lần xuất hiện từng ký tự.

Giá trị lớn nhất chính là đáp án.


Code Python

import sys

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

s = input()

dem = {}

for ch in s:

    if ch not in dem:
        dem[ch] = 1
    else:
        dem[ch] += 1

print(max(dem.values()))

Cách 2 (đẹp hơn)

Dùng mảng 26 phần tử.


Ý tưởng

A ->0

B ->1

...

Z ->25

Mỗi lần gặp

ord(ch)-ord('A')
thì tăng lên.

Code Python

import sys

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

s = input()

cnt = [0] * 26

for ch in s:

    cnt[ord(ch) - ord('A')] += 1

print(max(cnt))


Vì sao mảng nhanh hơn Dictionary?

  • Truy cập trực tiếp theo chỉ số (O(1) với hằng số rất nhỏ).
  • Không cần băm (hash).
  • Chỉ có 26 chữ cái nên rất phù hợp.

Tổng kết cả đề

Bài Ý tưởng Độ phức tạp Bộ nhớ Mức độ
Bài 1 – DAY So sánh ngày, tháng O(1) O(1) ⭐
Bài 2 – SUNFLOWER Kiểm tra số nguyên tố đến √n O(n√M) O(1) ⭐⭐
Bài 3 – ROBOT Đếm số vị trí trong đoạn [p, p+k] O(n) O(n) (hoặc O(1) nếu đọc từng số) ⭐⭐
Bài 4 – LAVENDER Duyệt ma trận, đếm số ≥ T O(mn) O(n) ⭐
Bài 5 – ESSENCE Đếm tần suất ký tự (Dictionary hoặc mảng 26 phần tử) O(n) O(26) ⭐

🎯 Nhận xét về Cấu Trúc Trọng Tâm Trong Đề Thi HSG Tin Học 9 Đồng Tháp

Đây là đề HSG THCS thiên về kỹ năng lập trình cơ bản, chưa yêu cầu các thuật toán nâng cao như quy hoạch động, đồ thị hay cây dữ liệu.

Các kiến thức chính được kiểm tra gồm:

  • Bài 1: Rẽ nhánh (if...elif...else).
  • Bài 2: Hàm kiểm tra số nguyên tố và tối ưu đến √n.
  • Bài 3: Duyệt mảng, xử lý đoạn giá trị; có thể mở rộng bằng tìm kiếm nhị phân.
  • Bài 4: Duyệt ma trận và đếm theo điều kiện.
  • Bài 5: Đếm tần suất bằng dict hoặc mảng đếm.

Đây là một đề rất phù hợp để ôn luyện cho học sinh mới bắt đầu thi HSG Tin học vì bao quát nhiều kỹ năng nền tảng quan trọng.

💡 Lời khuyên từ Vi Tính Tấn Dân: Đề thi Tin học lớp 9 hiện nay hướng nhiều đến tư duy thuật toán tối ưu thời gian (O(N \logN) hoặc O(N)). Luyện tập thường xuyên với bộ đề này sẽ giúp bạn làm quen với áp lực thời gian và hạn chế tối đa các lỗi quá thời gian (Time Limit Exceeded).

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

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

📥 Link Tải Bộ 21 Đề Thi HSG Tin Học 9 Đồng Tháp (File Chuẩn)

Các bạn học sinh và thầy cô có thể tải trọn bộ đề thi hoàn toàn miễn phí theo đường dẫn dưới đây:

👉 [LINK TẢI TRỌN BỘ 21 ĐỀ THI HSG TIN HỌC LỚP 9 ĐỒNG THÁP (PDF/WORD)]

Tải bằng google driver

(Lưu ý: Nếu gặp bất kỳ lỗi nào trong quá trình tải file, vui lòng để lại bình luận bên dưới để Vi Tính Tấn Dân hỗ trợ kịp thời!)

🖥️ Vi Tính Tấn Dân – Đồng Hành Cùng Tri Thức & Công Nghệ

Bên cạnh việc chia sẻ kiến thức và tài liệu học tập miễn phí, Vi Tính Tấn Dân tự hào là đơn vị uy tín chuyên cung cấp:

  • 💻 Dàn máy tính PC Lập trình – Học tập – Chơi game cấu hình tối ưu, giá rẻ.

  • 🛠️ Dịch vụ sửa chữa, nâng cấp Laptop & PC nhanh chóng, tận tâm tại Đồng Tháp.

  • 🎧 Linh phụ kiện máy tính chính hãng (Bàn phím, chuột, màn hình, SSD…).

Nếu bạn đang tìm kiếm một chiếc máy tính mượt mà để phục vụ việc học lập trình C++, Python hay Pascal, hãy liên hệ ngay với Vi Tính Tấn Dân để nhận được sự tư vấn chu đáo nhất!

7. Cách thức đăng ký và đóng học phí như thế nào?

Bạn có thể liên hệ trực tiếp với Thầy qua các kênh sau để được tư vấn và nhận báo giá ưu đãi:

  • Số điện thoại / Zalo: 0937.179.278

  • Hình thức đóng phí: Chuyển khoản ngân hàng hoặc nộp trực tiếp tại cơ sở (nếu học offline).

Đạt giải 3 học sinh giỏi tin học cấp tỉnh

Đạt giải 3 học sinh giỏi tin học cấp tỉnh

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

Vui lòng Chấm điểm 5 sao trang cho bài viết hay !

 

 

2 Khóa Học Tin Học Online Thầy Dân Luyện Thi Chuyên Tin Tin Văn Phòng Cấp Tốc

2 Khóa Học Tin Học Online Thầy Dân Luyện Thi Chuyên Tin Tin Văn Phòng Cấp Tốc

📞 Thông Tin Liên Hệ:

  • Website: vitinhtandan.com

  • Hotline/Zalo: (0937.179.278)

  • Địa chỉ: (Tổ 5, Ấp Tân Lược 1, xã Tân Hương, Đồng Tháp)

Chúc các bạn học sinh ôn luyện thật tốt và đạt kết quả cao nhất trong kỳ thi Học sinh giỏi Tin học lớp 9 sắp tới!

Dưới đây là phần Câu Hỏi Thường Gặp (FAQ) chuẩn SEO dành riêng cho bài viết. Đoạn này không chỉ giúp giữ chân người đọc lâu hơn mà còn rất dễ được Google đưa lên vị trí Featured Snippet (Top 0) hoặc hiển thị trong mục “Mọi người cũng hỏi”:

❓ Câu Hỏi Thường Gặp (FAQ) – Đề Thi HSG Tin Học 9 Đồng Tháp

1. Bộ đề thi HSG Tin học lớp 9 Đồng Tháp có đáp án chi tiết không?

Trả lời: Có. Bộ 21 đề thi HSG Tin học 9 Đồng Tháp do Vi Tính Tấn Dân tổng hợp đều đi kèm đáp án, hướng dẫn giải chi tiết, test case mẫu và code tham khảo bằng các ngôn ngữ phổ biến như C++, Python và Pascal.

2. Tải bộ đề thi HSG Tin học 9 Đồng Tháp 2026 – 2027 có mất phí không?

Trả lời: Hoàn toàn MIỄN PHÍ. Bạn chỉ cần bấm vào đường link Google Drive được đính kèm trong bài viết là có thể tải toàn bộ file PDF/Word về máy để in ấn và học tập dễ dàng.

3. Đề thi HSG Tin học lớp 9 Đồng Tháp thường sử dụng ngôn ngữ lập trình nào?

Trả lời: Hiện nay, các kỳ thi Học sinh giỏi Tin học THCS tại Đồng Tháp ưu tiên sử dụng ngôn ngữ C++ và Python nhờ tối ưu tốc độ và thư viện phong phú. Tuy nhiên, một số bài thi vẫn chấp nhận Pascal. Học sinh nên tập trung luyện tập kĩ năng tư duy thuật toán trên C++ hoặc Python để đạt điểm tối đa.

4. Học sinh lớp 9 cần tập trung những dạng thuật toán nào để thi HSG Tin học?

Trả lời: Cấu trúc đề thi HSG Tin học 9 Đồng Tháp thường xoay quanh các dạng bài trọng tâm:

  • Xử lý chuỗi, mã hóa và số học cơ bản.

  • Thuật toán tìm kiếm nhị phân, kỹ thuật hai con trỏ, mảng cộng dồn.

  • Sắp xếp tối ưu $O(N \log N)$.

  • Quy hoạch động cơ bản (Đếm cách, Tối ưu hóa).

5. Học lập trình nên chọn cấu hình máy tính/laptop như thế nào?

Trả lời: Để phục vụ tốt việc học lập trình C++, Python và chạy các phần mềm như Code::Blocks, VS Code, PyCharm…, bạn nên chọn PC/Laptop có cấu hình tối thiểu:

  • CPU: Core i3/Ryzen 3 trở lên (thế hệ mới).

  • RAM: Tối thiểu 8GB.

  • Ổ cứng: SSD 256GB để khởi động phần mềm mượt mà.

📌 Nếu bạn cần tư vấn chọn máy tính học tập – lập trình phù hợp với ngân sách, hãy liên hệ ngay hotline của Vi Tính Tấn Dân để được hỗ trợ tốt nhất!

100 đề và đáp án thi HSG tin Python cấp huyện 2025

Thầy mến chào các em đang yêu thích môn tin học lập trình Python! Để có thể thi tốt và đạt giải cao trong kỳ thi học sinh giỏi cấp huyện sắp tới ! Thầy đã soạn ra được các đề hay và bám sát với các đề thi các em phải ôn luyện trong 100 đề và đáp án thi HSG tin Python cấp huyện 2025 là đậu chắc luôn ! Mong các em có thể sắp xếp nhiều thời gian hơn để ôn luyện nhiều hơn để mình được nhiều kinh nghiệm

Đây đã là đề thi số 20 Đề 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

Đề thi học sinh giỏi cấp huyện chợ Gạo năm 2022 – 2023:

100 đề và đáp an thi HSG tin Python

Tài liệu On thi HSG Tin học THPT Python

De thi học sinh giỏi tin 11 Python

Tài liệu on thi HSG Tin học THPT C++

De thi học sinh giỏi Tin lớp 10 cấp trường Python

De thi học sinh giỏi Tin lớp 10 cấp trường Python

PHÒNG GIÁO DỤC VÀ ĐÀO TẠO CHỢ GẠO

KỲ THI CHỌN HỌC SINH GIỎI CẤP HUYỆN TRUNG HỌC CƠ SỞ.

NĂM HỌC 2022-2023

Môn: TIN HỌC

Thời gian làm bài: 150 phút (Không kế thời gian giao đề)

Ngày thi: 14/02/2023

(Đề thi có 03 trang, gồm 05 bài)

TỔNG QUAN BÀI THI

Tên bài File chương trình File dữ liệu vào

*

File kết quả
Bài 1 In sổ lé SOLE.* SOLE.INP SOLE.OUT
Bài 2 Đối xứng DOIXUNG.* DOIXUNG.INP DOIXUNG.OUT
Bài 3 Công tắc đèn SWITCH.* SWITCH.INP SWITCH.OUT
Bài 4 Giải mã thông điệp GIAIMA.* GIAIMA.INP GIAIMA.OUT
Bài 5 Chọn hoa CHONHOA.* CHONHOA.INP CHONHOA.OUT

Dấu * được thay thế bởi PAS, CPP, PY của ngôn ngữ’ lập trình được sử dụng tương ứng là Pascal, C++, Python hoặc phần mở rộng tương ứng với ngôn ngữ lập trình khác.

Bài 1: In số lẻ (4,0 điểm) ?

  • Cho n là một số nguyên bất kì {0<n<1000).
  • Yêu cầu: Viết chương trình in ra các số lẻ nhỏ hơn hoặc bằng số nguyên dương n và đếm xem có bao nhiêu số lẻ được in ra.
  • Dữ liệu vào: Cho từ tệp văn bản SOLE.INP (Có thể nhập từ bàn phím) gồm
  • 1 dòng chứa số nguyên n (0<n<1000).                        ‘
  • Dữ liệu ra: Ghi vào tệp văn bản SOLE.OUT (Có thể in ra màn hình) gồm 2 dòng chứa các thông tin sau:
    • Dòng đầu tiên liệt kê 1 dãy số lẻ.
    •  Dòng thử hai ghi số lượng các số lẻ.
 

Ví dụ:

SOLE.INP SOLE.OUT
20 1 3 5 7 9 11 13 15 17 19 10

 

 

Bài 2: Đối xứng (4.0 điểm ) ?

  • Số nguyên n gọi là số đối xứng nếu đọc từ trái qua phải, hay từ phải qua trái đều được số giống nhau. Chẳng hạn số 11,121,101 là các số đối xứng.
  • Yêu cầu: Viết chương trình tìm tất cả các số đối xứng có từ 2 chữ số trở lên từ n đến m.
  • Dữ liệu vào: Cho từ file văn bản DOIXƯNG.INP gồm 1 dòng chứa 2 số nguyên n, m (n <m) cách nhau bởi dấu-cách.
  • Dữ liệu ra: Ghi ra file văn bản DOIXUNG.OUT chứa các số đối xứng có 2 chữ số trở lên từ n đến m; các số cách nhau bởi dấu cách. Nếu không tìm được số đối xứng như yêu cầu thì ghi ra
  • Ví dụ:
DOIXUNG.INP DOIXUNG.OUT
80 110 88 99 101

Bài 3: Công tắc đèn (4,0 điểm) ?

  • Trên vách tường được bố trí dãy liên tiếp các công tắc để điều khiển một bóng đèn điện, mỗi công tắc có thể được bật hoặc tắt. Được biết đèn chỉ được bật sáng khi có ít nhất hai công tắc được bật và không nằm cạnh nhau.
  • Yêu cầu: Với trạng thái của các công tắc, bạn cần phải xác định xem đèn có được bật sáng hay không.
  • Dữ liệu vào: Cho từ file văn bản SWITCH.INP gồm một xâu chứa các ký hiệu “+” hoặc mô tả các trạng thái của công tắc, từ công tắc đầu tiên đến công tắc cuối cùng và theo thứ tự từ trái sang phải. Ký hiệu “+” cho biêt công tăc ở trạng thái “bật” và chỉ trạng thái “tắt”.
  • Dữ liệu ra: Ghi ra file văn bản SWITCH.OUT chứa chữ “On” (không có dấu nháy kép) nếu đèn được bật sáng hoặc “Off ’ (không có dấu nháy kép) trong trường hợp ngược lại.
  • Ví dụ: 
SVVITCH.INP SWITCH.OUT
+-+- On
+–+-++ Off

Bài 4: Giải mã thông điệp (4,0 điểm ) ?

  • Diễn giải:
    • Trong thời đại ngày nay, thông tin cá nhân của mỗi người dễ dàng bị xâm nhập bởi rất nhiều công nghệ hiện đại dùng để nghe lén.
    • Chính vì vậy, một đôi bạn muốn bảo mật thông tin cho nhau đã có sáng kiến nghĩ ra cách trao nhau những thông điệp mà người khác đọc hoặc nghe được thì không hiểu gì.
    • Thông điệp của họ là một câu với nhiều từ được phân biệt bởi ký tự trống (dấu cách) và được sắp xếp lộn xộn để trở thành câu vô nghĩa.
    • Để hiểu nội dung một thông điệp của người bạn gửi cho mình,
    • hai người bạn đã quy ước trước một bộ mã là một dãy số nguyên dương có số lượng số tương ứng với số từ của thông điệp nhằm giải mã thành câu có ý nghĩa.
  • Yêu cầu: Viết chương trình để giúp đôi bạn giải mã một thông điệp cho trước.
  • Dữ liệu vào: Cho từ file văn bản GIAIMA.INP gồm 2 dòng:
    •  Dòng đầu ghi một câu có không quá 255 kí tự là thông điệp được gởi đi.
    •  Dòng thứ hai ghi bộ mã gồm một dãy các số nguyên dương chỉ vị trí các từ của thông điệp trên (mỗi số cách nhau bởi 1 dấu khoảng trắng).
  • Dữ liệu ra: Ghi ra file văn bản GIAIMA.OUT gồm một dòng ghi câu đã được giải mã từ thông điệp đã cho.
  • Ví dụ:
 

GIAIMA.INP GIAIMA.OUT
gioi ban chuc hoc luon

3 2 5 4 1

chuc ban luon hoc gioi

Bài 5: Chọn hoa (4,0 điểm ) ?

  • Diễn giải:
    • Một công ty XYZ nọ, cứ đến mỗi quý là tổ chức sinh nhật cho nhân viên 1 lần.
    • Ông chủ của công ty này tên Bình là người yêu thích hoa lan, cho nên đến lần tổ chức sinh nhật trong quý I năm 2023 này,
    • Ông Bình quyết định đến cửa hàng bán hoa tươi để mua hoa về tặng cho nhân viên.
    • Cửa hàng hiện đang có n (n<= 20) giỏ phong lan rất đẹp được đánh số từ 1 đến n.
    • Các giỏ lan đều đẹp như nhau nên ông phân vân không biết chọn giỏ nào.
    • Ông muốn mua tặng cho nhân viên là k ( k <=n ) giỏ phong lan
  • Yêu cầu: Viết chương trình giúp ông Bình tìm tất cả các cách có the chọn.
  • Dữ liệu vào: Cho từ tệp văn bản CHONIIOA.INP gồm một dòng chứa 2 số nguyên n, k.
  • Dữ liệu ra: Ghi vào tệp văn bản CHONHOA.OUT tất cả các cách chọn có thể và tổng số cách chọn.
  • Ví dụ:
CHONHOA.INP CHONHOA.OUT
4 2 1 2

1 3

1 4

2 3

2 4

3 4

Tong so cach chon: 6

Đáp án bài 1: In số lẻ (4,0 điểm) ?

 

import sys
sys.stdin=open('SOLE.INP','r')
sys.stdout=open('SOLE.OUT','w')
n=int(input())
dem=0
for i in range(n+1):
    if i%2!=0:
        dem+=1
        print(i,end=' ')
print()
print(dem)

 

Đáp án bài 2: Đối xứng (4.0 điểm ) ?

 

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

 

Đáp án bài 3: Công tắc đèn (4,0 điểm) ?

 

import sys
sys.stdin=open('SWITCH.INP','r')
sys.stdout=open('SWITCH.OUT','w')
s=input()
a=list(s)
kq=1
for i in range(len(a)-1):
    if (a[i]=='-'and a[i+1]=='-') or (a[i]=='+'and a[i+1]=='+'):
        kq=0
        break
if kq==1:
    print('On')
else:
    print('Off')

 

Đáp án bài 4: Giải mã thông điệp (4,0 điểm ) ?

 

import sys
sys.stdin=open('GIAIMA.INP','r')
sys.stdout=open('GIAIMA.OUT','w')
a=input().split()
b=list(map(int,input().split()))
c=[]
d=[]
for i in range(len(b)):
    c.append(b[i]-1)
for i in range(len(c)):
    for j in range(len(a)):
        if c[i]==j:
            d.append(a[j])
print(*d)

 

Đáp án bài 5: Chọn hoa (4,0 điểm ) ?

 

import sys
sys.stdin=open('CHONHOA.INP','r')
sys.stdout=open('CHONHOA.OUT','w')
n,k=list(map(int,input().split()))
dem=0
for i in range(1,k+2):
    for j in range(2,n+1):
        if i!=j and i<=j:
            dem+=1
            print(i,j)
print('Tong so cach chon:',dem,sep='')

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 !

 

 

19 Đề thi HSG Tin 9 C++ Python có đáp án 2024 – 2025

Rồi các em đã giải đến đề thứ 19 thi HSG Tin 9 C ++ hoặc Python là các em đã có nhiều kinh nghiệm để chuẩn bị thi cấp huyện cho tốt rồi! Các em nào chưa giải bắt đầu từ đề 1 các em nên giải từ đề 1 trước vì mình giải đề từ cơ bản đến nâng cao các em nhé! Chúc các em vượt qua kỳ thi và đạt được kết quả thật tốt các em nhé !

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

  •  Các bạn bạn nào chưa giải tới thì vui lòng chọn lại bắt đầu từ Giải đề 1 các bạn nhé !
  • Vì từ thầy để các đề từ dễ đến nâng cao các bạn nhé! Mình mới vô đừng giải đề khó quá mà phải giải từ dễ trước từ từ sẽ giỏi lên từng ngày các bạn nhé!
  • Các đề ôn thi để chuẩn bị thi Cấp Huyện 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

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 đề 19 thi học sinh giỏi Tin học THCS có đáp ÁN dễ học nhất năm 2024 – 2025 !

TỔNG QUAN CÁC BÀI THI

Thứ tự Tên bài File

chương

trình

File dữ liệu

vào

File kết quả
Bài 1 Phân loại cận thị D201.* D201.INP D201.OUT
Bài 2 In những số nguyên tố mà đảo ngược của số đó cũng là số nguyên tố của các số nguyên từ m đến n D202.* D202.INP D202.OUT
Bài 3 Đếm số lượng số trong mảng có tổng các ước là số lẻ D203.* D203.INP D203.OUT
Bài 4 Xóa các từ trùng lặp trong xâu s D204.* D204.INP D204.OUT
Bài 5 Mã hóa xâu s D205.* D205.INP D205.OUT

Bài 1 ( 4 điểm ): Phân loại cận thị ?

  • Diễn giải:
    • Một robot AI được huấn luyện để làm nhiệm vụ phân loại mức độ cận thị của học sinh, người huấn luyện dựa vào số độ (Diop) được xác định bằng thiết bị chuyên dụng gắn trên robot. Dưới đây là phân loại mức độ cận thị:
    • Cận thị nhẹ: Độ cận dưới 3.0 Diop.
    • Cận thị trung bình: Độ cận từ 3.0 Diop đến dưới 6.0
    • Cận thị nặng: Độ cận từ 6.0 Diop dưới 10.0 Diop.
    • Cận thị cực đoan: Độ cận từ 10.00 Diop trở lên.
    • Nhập vào số độ cận thị của một người, hãy cho biết người này đang ở mức độ cận thị nào.
  • Input: Một số thực có giá trị từ 0 đến 10 mũ 2 cho biết giá trị của độ cận.
  • Output: Kết quả mức độ theo mô tả trên (không có dấu tiếng Việt, ký tự đầu tiên là chữ in hoa).
  • Ví dụ:

D201.INP

D201.OUT

1.75 Can thi nhe
3.25 Can thi trung bình

Bài 2: (4 điểm) ln những số nguyên tố mà đảo ngược của số đó cũng là số nguyên tố 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 những số nguyên tố mà đảo ngược của
  • sổ đó cũng lả số nguyên tố 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: Những số nguyên tố mà đảo ngược của số đó cũng là số nguyên tố theo thứ tự từ m đến n, các số cách nhau một dấu cách.
  • Ví dụ:

Input

Output

11

15

11 13
2

13

2 3 5 7 11 13

 

Bài 3: (4 điểm) Đếm số lượng số trong mảng có tổng các ước là số lẻ ?

  • Diễn giải:
    • Nhập vào một mảng a có n số nguyên: a0, a1, a2,…..an
    • Đếm số lượng số trong mảng có tổng các ước dương là số lẻ.
  • 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á 105–
  • Output:
    • Số lượng số trong mảng có tổng các ước dương là số lẻ.
    • Nếu không có số nào có tổng các ước dương là số lẻ trong mảng thì in “-“
  • Ví dụ:
Input

Output

7 2
9
6
3
15
10
7
-2

 

 

5 1
7
3
6
0

 

Bài 4: (4 điểm) Xóa các từ trùng lặp trong xâu s ?

  • Diễn giải:
    • Nhập vào một xâu s.
    • Xóa các từ trùng lặp trong xâu s (giữ lại một từ).
  • 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: Xâu s đã được xóa các từ trùng lặp.
  • Ví dụ:

Input

Output

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

 

Bài 5: (4 điểm) Mã hóa xâu s ?

  • Diễn giải:
    • Nhập vào một xâu s và một số tự nhiên k.
    • Mã hoá xâu s bằng cách đổi tất cả ký tự sang ký tự mới cách ký tự cũ k đon vị trong bảng mã ASCII
  • Input: Xâu s trên một dòng một, có độ dài không vượt quá 105, chứa các ký tự là chữ cái in hoa, chữ sổ, ký hiệu và các dấu cách. Dòng hai là sổ tự nhiên k (0<k<27)
  • Output: Kết quả xâu s đã được mã hoá
  • Ví dụ:
Input

Output

LAP TRINH

3

ODS#WULỌK
XIN CHAO, TOI LA MAY VI TINH 10 bSX*MRKY6*AYS*VK*WKc*’S*Ã

 

Bài 1 ( 4 điểm ): Phân loại cận thị ?

 

import sys
sys.stdin=open('D201.INP','r')
sys.stdout=open('D201.OUT','w')
n=float(input())
if n<3.0:
    print('Can thi nhe')
if 3.0<=n<6.0:
    print('Can thi trung binh')
if 6.0<=n<10.0:
    print('Can thi nang')
if n>10.00:
    print('Can thi cuc doan')

 

Bài 2: (4 điểm) ln những số nguyên tố mà đảo ngược của số đó cũng là số nguyên tố của các số nguyên từ m đến n ?

 

import sys
sys.stdin=open('D202.INP','r')
sys.stdout=open('D202.OUT','w')
def ktnt(n):
    i=2
    while i*i<=n and n%i!=0:
        i+=1
    return i*i>n and n>1
def daonguoc(n):
    s=str(n)
    s=s[::-1]
    return int(s)
m=int(input())
n=int(input())
for i in range(m,n+1):
    if ktnt(i) and ktnt(daonguoc(i)):
        print(i,end=' ')

 

Bài 3: (4 điểm) Đếm số lượng số trong mảng có tổng các ước là số lẻ ?

 

import sys
sys.stdin=open('D203.INP','r')
sys.stdout=open('D203.OUT','w')
def tonguoc(n):
    tong=0
    for i in range(1,n+1):
        if n%i==0:
            tong+=i
    return tong
n=int(input())
a=[]
for i in range(n):
    a.append(int(input()))
dem=0
for i in range(len(a)):
    if tonguoc(abs(a[i]))%2!=0:
        dem+=1
if dem==0:
    print('-')
else:
    print(dem)

 

Bài 4: (4 điểm) Xóa các từ trùng lặp trong xâu s ?

 

import sys
sys.stdin=open('D204.INP','r')
sys.stdout=open('D204.OUT','w')
m=input().split()
n=sorted(set(m),key=m.index)
print(*n,sep=' ')

 

Bài 5: (4 điểm) Mã hóa xâu s ?


import sys
sys.stdin=open('D205.INP','r')
sys.stdout=open('D205.OUT','w')
def Mahoaxaus(s,k):
    tong=''
    for i in s:
        tong+=chr(ord(i)+k)
    return tong
s=input()
k=int(input())
ketqua=Mahoaxaus(s,k)
print(ketqua)

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 !

 

 

 

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ài File

chương

trình

File dữ liệu

vào

File kết quả
Bài 1 Phân loại nguy cơ nhiễm Covid D191.* D191.INP D191.OUT
Bài 2 ln số đảo ngược của các số nguyên từ m đến n D192.* D192.INP D192.OUT
Bài 3 In các số có tổng chữ số là số chính phương trong mảng D193.* D193.INP D193.OUT
Bài 4 Đếm số lần xuất hiện của một từ trong xâu D194.* D194.INP D194.OUT
Bài 5 Tách các thành phần trong số điện thoại bàn D195.* D195.INP D195.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ơ cao: 50<=n<150
    • 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

21 Nguy co trung binh
63 Nguy 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ụ:
Input Output
11 15 11 21 31 41 51
2 13 2 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

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

 

5 72 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! moi

 

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

 

 

17 đề thi tin học trẻ có Đáp Án python THCS cấp huyện PDF

Mong muốn của các em là muốn đạt điểm cao trong kỳ thi tin học trẻ python THCS cấp huyện sắp tới phải không? muốn được như vậy các em phải luyện qua 17 đề thi tin học trẻ có Đáp Án python THCS cấp huyện PDF. Thầy đã tổng hợp tất cả các bài từ căn bản đến nâng cao để cho các em giải đề cho tốt các em nhé !

Đây đã là đề thi số 17 Đề 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

TỔNG QUAN CÁC BÀI THI

Số Thứ tự Tên bài File

chương

trình

File dữ liệu

vào

File kết quả
Bài 1 Mức độ Covid D181.* D181.INP D181.0UT
Bài 2 In tổng ước của các số nguyên từ m đến n D182.* D182.INP D182.0UT
Bài 3 Tìm số nguyên tố lớn nhất trong mảng D183.* D183.INP D183.0UT
Bài 4 Viết ngược từng từ trong xâu s D184.* D184.INP DI 84.0UT
Bài 5 Tách tên file và phần mở rộng D185.* D185.INP D185.0UT

Bài 1: (4 điểm) Mức độ Covid ?

  • Diễn giải:
    • Để đánh giá mứ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 trong một xã (thị trấn) là một số nguyên n (0 < n < 1 o5), hãy trả lời mức độ theo qui ước;
    • Mức 1: 0 < n < 20
    • Mức 2: 20 <n <50
    • Mức 3: 50 < n < 150
    • Mức 4: 150 < n
  • Input: Một số nguyên có giá trị từ 0 đến 105 cho biết giá trị của n.
  • Output: Mức độ theo mô tả trên.
  • Ví dụ:
input output
21 Muc 2
63 Muc 3

Bài 2: (4 điểm) In tổng ước dương 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 tổ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<106), trên một dòng, cách nhau bởi dấu cách.
  • Output: Tổng ước dương 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ụ:
Input Output
11 15 12 28 14 24 24
2 13 3 476 12 8 15 13 18 12 28 14

Bài 3: (4 điểm) Tìm số nguyên tố lớn nhất 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-i. Tìm số nguyên tố lớn nhất trong mảng và vị trí.
  • 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á 105.
  • Output: Số nguyên tố lớn nhất trong mảng và vị trí trên cùng một dòng, 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ụ:
Input Output
7 11 2
9
6
11
8
10
5
-2

—————————————————

5 7 1
20
7
3
8
0

Bài 4: (4 điểm) Viết ngược từng từ trong xâu s ?

  • Diễn giải:
    • Nhập vào một xâu s.
    • Viết ngược từng từ 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 từ được viết ngược, trên cùng một dòng, theo thứ tự trong xâu s
  • Ví dụ:
Input Output
Toi hoc LAP TRINH C++ tu nam 2024 ioT coh PAL HNIRT ++C ut man 4202
Thi HOC SINH GIOI mon Tin Hoc vao thang 02 nam 2024 ihT COH HNIS IOIG nom niT coH oav gnaht 20 man 4202

Bài 5: (4 điểm) Tách tên file và phần mở rộng ?

  • Diễn giải:
  • Nhập vào một chuỗi s là tên đầy đủ của một file gồm phần tên và phần mở rộng
  • Input: Chuỗi s trên một dòng, có độ dài không vượt quá 103, chứa các chữ cái, chữ số, và ký hiệu. Phần mở rộng nằm sau dấu chấm cuối cùng trong s
  • Output: In tên file trên dòng một và phần mở rộng trên dòng hai
  • Ví dụ:
Input

Output

BaiTap.OnThiCuoiKy .2024-2025.Docx BaiTap.OnThiCuoiKy.2024-2025 Docx
100-CauHoiTracNghiem.TinHoc9.Pptx 100-CauHoiTracNghÌem.TinHoc9 pptx

 

Đáp án bài 1: (4 điểm) Mức độ Covid ?

 

import sys
sys.stdin=open('D181.INP','r')
sys.stdout=open('D181.OUT','w')
n=int(input())
if 1<=n<20:
    print('Muc 1')
elif 20<=n<50:
    print('Muc 2')
elif 50<=n<150:
    print('Muc 3')
elif 150<=n:
    print('Muc 4')

 

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

 

import sys
sys.stdin=open('D182.INP','r')
sys.stdout=open('D182.OUT','w')
def Tonguoc(n):
    t=0
    for i in range(1,n+1):
        if n%i==0:
            t+=i
    return t
m,n=map(int,input().split())
t=0
for i in range(m,n+1):
    print(Tonguoc(i),end=' ')

 

Đáp án bài 3: (4 điểm) Tìm số nguyên tố lớn nhất trong mảng ?

 

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

 

Đáp án bài 4: (4 điểm) Viết ngược từng từ trong xâu s ?

 

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

 

Đáp án bài 5: (4 điểm) Tách tên file và phần mở rộng ?

 

import sys
sys.stdin=open('D185.INP','r')
sys.stdout=open('D185.OUT','w')
s=input()
vt=s.rfind('.')
truoc=s[0:vt]
sau=s[vt+1:len(s)]
print(truoc)
print(sau)

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 !

 

 

16 Đề bài tập Python có lời giải PDF thi HSG cấp huyện mới nhất

Để các em có thể thi học sinh giỏi môn Tin Học cấp huyện và cấp tỉnh cho tốt nhất ! Thầy đã soạn ra được 16 Đề bài tập Python có lời giải PDF thi HSG cấp huyện mới nhất. Để các em có thể rèn luyện và ôn tập để chuẩn bị cho kỳ thi tốt nhất ! Thầy chúc các em đạt được kết quả thật cao và thành công !

Đây đã là đề thi số 16 Đề 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

Hãy mau giải đề 16 thi học sinh giỏi cấp huyện giải được thầy thưởng:

Thứ tự Bài

Tên bài File

chương

trình

File dữ liệu vào

File kết quả

Bài 1 Tính độ tuổi D171.* D171.INP D171.OUT
Bài 2 In số ước của các số nguyên từ m đến n D172.* D172.ỈNP D172.OUT
Bài 3 Tính trung bình cộng các số nguyên tố trong mảng D173.* D173.INP D173.OUT
Bài 4 sắp xếp tên theo bảng chữ cái, nếu trùng tên, xếp theo họ và chữ lót D174.* D174.INP D174.OUT
Bài 5 Chuẩn hóa định dạng giờ phút giây D175.* D175.INP D175.OUT

Bài 1: (4 điểm) Tính độ tuổi ?

  • Diễn giải:
    • Một trung tâm thương mại X đang có chương trình khuyến mãi; hình thức khuyến mãi được phân chia theo độ tuôi, mỗi độ tuôi có phân trăm khuyên mải khác nhau. Dưới đây là cách phân loại độ tuổi của trung tâm thương mại X:
      • Nhi đồng: 5 < tuổi <11.
      • Thiếu niên: 11 < tuổi <16.
      • Thanh niên; 16 < tuổi < 30.
      • Trung niên: 30 < tuổi < 50.
      • Lão niên: tuổi > 50.
    • Nhập vào tuổi của một người, hãy cho biết người này đang ở độ tuổi nào.
  • Input: Một số nguyên n (5 < n < 150) cho biết tuổi của một người.
  • Output: Một dòng chữ theo mô tả trên (“Nhi dong” hoặc “Thieu nien” hoặc “Thanh nien” hoặc “Trung nien” hoặc “Lao nien”).
  • Ví dụ:

Input

Output

14 Thieu nien
50 Lao niên

Bài 2: ( 4 điểm ) In số ước dương 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ố ướ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ũ 6 ), mỗi số trên một dòng.
  • Output: Số ước dương 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ụ:
Input Output
11

15

2 6 2 4 4
2

13

2 2 3 2 4 2 4 3 4 2 6 2

 

Bài 3: (4 điểm) Tính trung bình cộng 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: a0, a1, a2, … an
    • Tính trung bình cộng các số nguyên tố trong mảng.
  • Input: Mồi dòng một số nguyên có giá trị tuyệt đối không vượt quá 105.
  • Output: Trung bình cộng các số nguyên tố trong mảng, làm tròn đến một chữ số thập phân. Nếu không có số nguyên tố nào trong mảng thì in “0.0”
  • Ví dụ:
Input Output
9 5.0
6
3
8
10
7
-2

———————————————————

7 4.0
3
8
0
2

Bài 4: (4 điểm) sắp xếp tên theo bảng chữ cái, nếu trùng tên, xếp theo họ lót ?

  • Diễn giải:
    • Nhập vào họ và tên của n người, sắp xếp tên theo bảng chữ cái ABC, nếu trùng tên, xếp họ lót theo ABC
  • Input: Dòng một là số nguyên n (0<n<103). n dòng tiếp theo, mỗi dòng là một xâu họ và tên của một người, có độ dài không vượt quá 10\ chứa các ký tự là chữ cái và các dấu cách.
  • Output: Danh sách đã sắp xếp, mỗi tên một dòng
  • Ví dụ:

Input

Output

10

Tran Phi An Binh

Le Thuy An

Vo True Lam Binh

Le Hoai An
Nguyen Thanh Binh
Tran Minh Binh
Le Tran Thuy An
Tran Trieu Binh
Nguyen Ngoc Thanh Binh

Le Bao An

Le Bao An

Le Hoai An

Le Thuy An

Le Tran Thuy An

Nguyen Ngoc Thanh Binh
Nguyen Thanh Binh
Tran Minh Binh
Tran Phi An Binh
Tran Trieu Binh
Vo True Lam Binh

 

12 Nguyen Tam An
Tran Phi An Binh Vo Thien An
Do Gia Bao Cao Ọuynh Anh
Nguyen Hoang Bach Vo Quynh Anh
Nguyen Tam An Nguyen Hoang Hai Au
Cao Quynh Anh Le Hoang Bach
Nguyen Ngoe Thanh Binh Nguyen Hoang Bach
Vo Quynh Anh Dang Ngo Gia Bao
Nguyen Hoang Hai Au Do Gia Bao
Le Hoang Bach Nguyen Ngoe Thanh Binh
Dang Ngo Gia Bao Nguyen Thanh Binh
Nguyen Thanh Binh Tran Phi An Binh
Vo Thien An

 

Bài 5: (4 điểm) Chuẩn hóa định dạng giờ phút giây ?

  • Diễn giải:
    • Nhập vào một chuỗi chứa giờ phút giây, chuẩn hóa theo định dạng giờ phút giây “hh:mm:ss”
  • 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 theo thứ tự cụm số đầu tiên trong s là giờ, cụm số thứ hai là phút và cụm số thứ ba là giây (dữ liệu giờ phút giây hợp lệ)
  • Output: In kết quả theo định dạng “hh:mm:ss”
  • Ví dụ:

Input

Output

Tôi sẽ đi học lúc 7 giờ 3 phút 12 giây 07:03:12
5.12.23 05:12:23

 

Đáp án bài 1: (4 điểm) Tính độ tuổi ?

 

import sys
sys.stdin=open('D171.INP','r')
sys.stdout=open('D171.OUT','w')
n=int(input())
if 5<=n<11:
    print('Nhi dong')
elif 11<=n<16:
    print('Thieu nien')
elif 16<=n<30:
    print('Thanh nien')
elif 30<=n<50:
    print('Trung nien')
elif n>=50:
    print('Lao nien')

 

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

 

import sys
sys.stdin=open('D172.INP','r')
sys.stdout=open('D172.OUT','w')
def demuoc(n):
    d=0
    i=1
    while i*i<=n:
        if n%i==0:
            d+=1
            if i!=n//i:
                d+=1
        i+=1
    return d
m=int(input())
n=int(input())
for i in range(m,n+1):
    print(demuoc(i),end=' ')

 

Đáp án bài 3: (4 điểm) Tính trung bình cộng các số nguyên tố trong mảng ?

 

import sys
sys.stdin=open('D173.INP','r')
sys.stdout=open('D173.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
tong=0
dem=0
tbc=0
for i in range(len(a)):
    if ktnt(a[i]):
        tong+=a[i]
        dem+=1
if dem>0:
    tbc=tong/dem
    print('%0.1f'%tbc)
else:
    print('0.0')

 

Đáp án bài 4: (4 điểm) sắp xếp tên theo bảng chữ cái, nếu trùng tên, xếp theo họ lót ?

 

import sys
sys.stdin=open('D174.INP','r')
sys.stdout=open('D174.OUT','w')
n=int(input())
a=[]
for i in range(0,n):
    a.append(input())
b=[]
ten=[]
ho=[]
for i in range(len(a)):
    x=a[i].split()
    ten.append(x[-1])
    s=''
    for j in range(len(x)-1):
        s+=x[j]+' '
    ho.append(s)
    b.append(x[-1]+s)
for i in range(len(b)-1):
    for j in range(i+1,len(b)):
        if b[i]>b[j]:
            b[i],b[j]=b[j],b[i]
            ten[i],ten[j]=ten[j],ten[i]
            ho[i],ho[j]=ho[j],ho[i]
for i in range(len(a)):
    print(ho[i],ten[i],sep='')

 

Đáp án bài 5: (4 điểm) Chuẩn hóa định dạng giờ phút giây ?

 

import sys,re
sys.stdin=open('D175.INP','r')
sys.stdout=open('D175.OUT','w')
n=input()
s=re.sub('[^0-9]+',' ',n).split()
if len(s[0])==1:
    s[0]='0'+s[0]
if len(s[1])==1:
    s[1]='0'+s[1]
if len(s[2])==1:
    s[2]='0'+s[2]
print(s[0],s[1],s[2],sep=':')

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 !