6 Giải đề thi học sinh giỏi tin học lớp 9 THCS tỉnh bình phước 2019 – 2020

🚀 Giải Chi Tiết Đề Thi HSG Tin Học THCS Bình Phước (Có Code Python Chuẩn) – Dễ Hiểu, Lên Tay Nhanh

Bạn đang ôn thi học sinh giỏi Tin học cấp tỉnh? Bài viết này tổng hợp và giải chi tiết các bài trong đề HSG Tin học THCS Bình Phước, kèm code Python chuẩn thi, giải thích dễ hiểu và tối ưu để bạn áp dụng ngay.

Hướng dẫn Giải đề thi học sinh giỏi tin học lớp 9 THCS Tỉnh Bình Phước 2019 – 2020 mới cập nhật ngày 11/4/2026

GIẢI BÀI 1: ĐIỂM TRUNG BÌNH

1 Giải đề thi học sinh giỏi tin học lớp 9 THCS tỉnh bình phước 2019 - 2020

 

import sys

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

# đọc dữ liệu
x, y = map(int, input().split())

# tính điểm trung bình
dtb = (3 * x + y) / 4

# kiểm tra
if dtb >= 5:
    print(1)
else:
    print(0)

GIẢI BÀI 2: TÍNH TỔNG

2 De thi HSG tỉnh Bình Phước

2 thi học sinh giỏi tin học lớp 9 THCS tỉnh bình phước 2019 - 2020

🧠 Phân tích

Yêu cầu:
👉 Tính tổng M chữ số tận cùng của số N

Ví dụ:

  • N = 25487, M = 2 → lấy 2 chữ số cuối: 8 + 7 = 15
  • N = 5876512, M = 3 → lấy: 5 + 1 + 2 = 8

⚡ Cách làm

Có 2 cách:

✅ Cách 1: Dùng chuỗi (dễ hiểu nhất)

  • Đổi N → string
  • Lấy M ký tự cuối
  • Cộng lại

💻 Code Python (chuẩn thi)

import sys

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

# đọc dữ liệu
n = input().strip()
m = int(input())

# lấy m chữ số cuối
last_digits = n[-m:]

# tính tổng
tong = 0
for c in last_digits:
    tong += int(c)

print(tong)

🚀 Cách 2: Dùng toán học (pro hơn, không cần string)

👉 Ý tưởng:

  • Lấy từng chữ số cuối bằng % 10
  • Lặp M lần

💻 Code:

 

import sys

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

n = int(input())
m = int(input())

tong = 0

for _ in range(m):
    tong += n % 10
    n //= 10

print(tong)

 


🎯 So sánh

CáchƯu điểmNhược
ChuỗiDễ hiểuChậm hơn chút
Toán họcNhanh, chuẩn HSGKhó nghĩ hơn

🔥 Lưu ý quan trọng

  • Nếu M > số chữ số của N → vẫn chạy đúng (lấy hết số)
  • Độ phức tạp: O(M) → rất nhanh

GIẢI BÀI 3: BỘ BA SỐ LỚN NHẤT

 

3 giải bài bộ 3 lớn nhất đề thi học sinh giỏi tin học THCS

Bài này là dạng trượt cửa sổ (Sliding Window) – cực kỳ hay trong HSG 🔥


🧠 Phân tích

Ta cần:

  • Xét mọi bộ 3 số liên tiếp:

    ai+ai+1+ai+2a_i + a_{i+1} + a_{i+2}

  • Tìm tổng lớn nhất
  • Nếu nhiều bộ → chọn chỉ số nhỏ nhất

⚡ Ý tưởng tối ưu

👉 Không cần tính lại từ đầu mỗi lần
→ Dùng cửa sổ trượt

  • Ban đầu:
    sum = a[0] + a[1] + a[2]
  • Sau đó:

    sum = sum – a[i-1] + a[i+2]

⏱ Độ phức tạp: O(n) (rất nhanh)

 

import sys

# đọc/ghi file
sys.stdin = open("BOMAX.INP", "r")
sys.stdout = open("BOMAX.OUT", "w")

# nhập dữ liệu
n = int(input())
day = list(map(int, input().split()))

# tính tổng 3 phần tử đầu tiên
tong_hien_tai = day[0] + day[1] + day[2]
tong_lon_nhat = tong_hien_tai

vi_tri_bat_dau = 0  # vị trí bắt đầu (0-based)

# duyệt các bộ còn lại
for i in range(1, n - 2):
    # cập nhật tổng bằng cửa sổ trượt
    tong_hien_tai = tong_hien_tai - day[i - 1] + day[i + 2]
    
    # nếu tìm được tổng lớn hơn thì cập nhật
    if tong_hien_tai > tong_lon_nhat:
        tong_lon_nhat = tong_hien_tai
        vi_tri_bat_dau = i

# in kết quả (đổi sang chỉ số 1-based)
print(tong_lon_nhat)
print(vi_tri_bat_dau + 1, vi_tri_bat_dau + 3)

📌 Ví dụ

Input:

5
2 8 4 6 3

Các bộ:

  • (2,8,4) = 14
  • (8,4,6) = 18 ✅
  • (4,6,3) = 13

👉 Output:

18
2 4

🚀 Lưu ý quan trọng (hay bị sai)

  • Chỉ update khi > (không phải ≥)
    → để giữ chỉ số nhỏ nhất
  • In ra chỉ số 1-based

🔥 Nâng cấp (chuẩn HSG thật)

Bạn có thể gặp biến thể:

  • Bộ k phần tử lớn nhất (k bất kỳ)
  • Không liên tiếp → dùng DP
  • Tổng lớn nhất nhưng ≤ X → khó hơn

🧠 Giải thích ngắn gọn

  • tong_hien_tai: tổng của 3 số liên tiếp đang xét
  • tong_lon_nhat: tổng lớn nhất tìm được
  • vi_tri_bat_dau: vị trí đầu của bộ 3

👉 Mỗi lần:

bỏ số bên trái + thêm số bên phải

⚠️ Lỗi hay gặp

  • Dùng >= → sai (phải dùng > để lấy vị trí nhỏ nhất)
  • Quên đổi sang 1-based
  • Sai chỉ số i + 2

GIẢI BÀI 4: MẬT KHẨU

4 mật khẩu

🧠 Bài: MẬT KHẨU

📌 Yêu cầu (suy ra từ đề)

  • Cho xâu S (độ dài ≤ 255)
  • Tìm một số nguyên P từ các chữ số trong S
  • Nếu:
    • Không có chữ số nào
    • Hoặc chỉ toàn số 0
      👉 thì P = 0

🎯 Cách hiểu chuẩn (dạng rất hay thi)

👉 Lấy tất cả chữ số trong chuỗi S, ghép lại thành số lớn nhất có thể


⚡ Ví dụ dễ hiểu

SKết quả
“a1b2c3”321
“abc”0
“0000”0
“t9h2”92

 

 

 

import sys

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

# nhập xâu
s = input().strip()

# lấy các chữ số
chu_so = []

for c in s:
    if c.isdigit():
        chu_so.append(c)

# nếu không có chữ số
if len(chu_so) == 0:
    print(0)
else:
    # sắp xếp giảm dần để tạo số lớn nhất
    chu_so.sort(reverse=True)
    
    # ghép lại thành số
    ket_qua = "".join(chu_so)
    
    # nếu toàn số 0
    if int(ket_qua) == 0:
        print(0)
    else:
        print(int(ket_qua))

🔥 Giải thích nhanh

  • isdigit() → kiểm tra có phải số không
  • sort(reverse=True) → tạo số lớn nhất
  • "".join() → ghép lại

⚠️ Lưu ý thi

  • Không dùng int sớm → dễ lỗi với số lớn
  • Xử lý riêng trường hợp toàn số 0

 

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

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

5/5 - (1 bình chọn)

MỜI BẠN ĐẶT CÂU HỎI ? MÌNH SẼ GIẢI ĐÁP HẾT !