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

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