Thẻ: De thi học sinh giỏi Tin học lớp 9 có đáp AN

23 Đề Thi HSG Tin Học THCS Lời Giải Chi Tiết Huyện Cái Bè 2021-2022

Bạn đang ôn luyện thi Học sinh giỏi (HSG) Tin học THCS và muốn tìm đáp án chi tiết, tối ưu cho đề thi huyện Cái Bè năm học 2021 – 2022? Bài viết này chính là “cẩm nang” không thể bỏ qua dành cho bạn!

Hôm nay, chúng ta sẽ cùng nhau phân tích và giải trọn vẹn 4 bài tập trong đề thi bằng ngôn ngữ Python cực kỳ dễ hiểu, chuẩn hóa việc đọc/ghi tệp tệp input/output bằng thư viện sys chuyên nghiệp. Cùng bắt đầu ngay nhé!

23 Giải Đề Thi HSG Tin Học THCS Lời Giải Chi Tiết Huyện Cái Bè 2021 - 2022

 

 

23 Giải Đề Thi HSG Tin Học THCS Lời Giải Chi Tiết Huyện Cái Bè 2021 - 2022

23 Giải Đề Thi HSG Tin Học THCS Lời Giải Chi Tiết Huyện Cái Bè 2021 - 2022

Giải Đề Thi HSG Tin Học THCS Lời Giải Chi Tiết Huyện Cái Bè 2021 – 2022

Tổng Quan Đề Thi HSG Tin Học Cái Bè 2021 – 2022

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

  • Số lượng bài: 04 bài

  • Hình thức đọc/ghi dữ liệu: Đọc từ file .INP và xuất ra file .OUT tương ứng.

BàiTên bàiFile dữ liệu vàoFile kết quảĐiểm
Bài 1Tổng các ướcUSUM.INPUSUM.OUT5.0
Bài 2Dãy ký tự sốSTRING.INPSTRING.OUT5.0
Bài 3Đào vàngGOLD.INPGOLD.OUT5.0
Bài 4Bộ ba hoàn hảoHOANHAO.INPHOANHAO.OUT5.0

Cấu Trúc Nhập/Xuất File Chuẩn Trong Python

Để chương trình Python đọc/ghi file tự động chuẩn như C++ khi nộp bài chấm tự động, chúng ta sử dụng kỹ thuật đổi hướng luồng dữ liệu chuẩn

Bài 1: Tổng Các Ước (USUM)

1. Đề bài & Phân tích

  • Yêu cầu: Cho số nguyên $N$ ($1 \le N \le 10^9). Tìm tổng các ước số (mà ước số đó là số chính phương) của $N$.

  • Định nghĩa: Một số là số chính phương nếu căn bậc hai của nó là một số nguyên (ví dụ: $1, 4, 9, 16, 25,…$).

  • Ý tưởng thuật toán:

    1. Duyệt tìm các ước số $d$ của $N$. Vì $N \le 10^9$, ta chỉ duyệt $d$ từ $1$ đến $\sqrt{N}$ để đạt độ phức tạp $O(\sqrt{N}), đảm bảo không bị quá thời gian chạy (TLE).

    2. Với mỗi $d$ là ước của $N$:

      • Kiểm tra $d$ có phải là số chính phương hay không.

      • Kiểm tra ước tương ứng $N / d$ có phải là số chính phương hay không (lưu ý tránh tính trùng khi $d = N/d$).

    3. Cộng dồn vào biến tong. Nếu không tìm thấy ước chính phương nào (hoặc tổng bằng 0), xuất ra 0.

 

 

import sys
import math

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

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

n = int(du_lieu[0])
tong_uoc_cp = 0
can_n = math.isqrt(n)

for d in range(1, can_n + 1):
    if n % d == 0:
        # Kiểm tra ước d
        if math.isqrt(d) ** 2 == d:
            tong_uoc_cp += d
        
        # Kiểm tra ước n // d
        uoc_con_lai = n // d
        if uoc_con_lai != d and math.isqrt(uoc_con_lai) ** 2 == uoc_con_lai:
            tong_uoc_cp += uoc_con_lai

print(tong_uoc_cp)

 

Bài 2: Dãy Ký Tự Số (STRING)

1. Đề bài & Phân tích

  • Yêu cầu: Cho xâu ký tự $S$ (độ dài $\le 250$). Tìm chuỗi các ký tự số gõ liên tiếp dài nhất mà bé Bin đã gõ.

  • Đầu ra:

    • Dòng 1: Độ dài của chuỗi số liên tiếp dài nhất.

    • Dòng 2: Chuỗi số liên tiếp đầu tiên đạt độ dài dài nhất đó.

  • Ý tưởng thuật toán:

    1. Duyệt xâu $S$, gom các ký tự là chữ số (char.isdigit()) liên tiếp thành từng nhóm xâu số.

    2. Tìm độ dài lớn nhất của các nhóm xâu số này.

    3. Tìm xâu số đầu tiên đạt độ dài lớn nhất đó và in ra kết quả.

      import sys
      
      sys.stdin = open('STRING.INP', 'r')
      sys.stdout = open('STRING.OUT', 'w')
      
      s = sys.stdin.read().strip()
      
      danh_sach_so = []
      xau_hien_tai = ""
      
      for ch in s:
          if ch.isdigit():
              xau_hien_tai += ch
          else:
              if xau_hien_tai:
                  danh_sach_so.append(xau_hien_tai)
                  xau_hien_tai = ""
      
      if xau_hien_tai:
          danh_sach_so.append(xau_hien_tai)
      
      if not danh_sach_so:
          print(0)
      else:
          do_dai_max = max(len(xau) for xau in danh_sach_so)
          
          # Tìm xâu số đầu tiên đạt độ dài max
          xau_max_dau_tien = next(xau for xau in danh_sach_so if len(xau) == do_dai_max)
      
          print(do_dai_max)
          print(xau_max_dau_tien)
      
      

Bài 3: Tìm Vàng (GOLD)

1. Đề bài & Phân tích

  • Yêu cầu: Cho xâu ký tự không quá 255 ký tự. Hãy tách các số tự nhiên xuất hiện trong xâu và tính tổng của chúng (“tổng số vàng”). Nếu trong xâu không có số nào, xuất ra 0.

  • Ví dụ:

    • B3a34afc -> 3 + 34 = 37

    • 3a34-123-> 3 + 34 + 123 = 160

    • Virus -> 0

  • Ý tưởng thuật toán:

    1. Duyệt từng ký tự trong xâu, nếu là chữ số thì ghép vào biến tạm.

    2. Khi gặp ký tự không phải chữ số, chuyển biến tạm thành số nguyên int() rồi cộng vào tổng.

    3. Cuối xâu, kiểm tra và cộng nốt số còn lại (nếu có).

 

import sys

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

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

tong_vang = 0
so_hien_tai = ""

for ch in s:
    if ch.isdigit():
        so_hien_tai += ch
    else:
        if so_hien_tai:
            tong_vang += int(so_hien_tai)
            so_hien_tai = ""

if so_hien_tai:
    tong_vang += int(so_hien_tai)

print(tong_vang)

Bài 4: Bộ Ba Hoàn Hảo (HOANHAO)

1. Đề bài & Phân tích

  • Yêu cầu: Cho danh sách $N$ số nguyên ($N < 20$). Tìm tất cả các bộ ba số có tổng đúng bằng 100.

  • Lưu ý quan trọng:

    • Không phân biệt vị trí các phần tử trong bộ ba (ví dụ bộ 10, 30, 60 hay 30, 60, 10 là như nhau).

    • In ra danh sách các bộ ba thỏa mãn.

  • Ý tưởng thuật toán:

    • N < 20 rất nhỏ, chúng ta có thể dùng 3 vòng lặp lồng nhau $O(N^3)$ hoặc dùng module itertools.combinations trong Python để duyệt qua tất cả các tổ hợp 3 phần tử cực kỳ ngắn gọn và chính xác.

 

import sys
from itertools import combinations

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

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

n = int(du_lieu[0])
a = [int(x) for x in du_lieu[1:n+1]]

# Tạo tất cả các tổ hợp 3 số và kiểm tra tổng
for combo in combinations(a, 3):
    if sum(combo) == 100:
        print(combo[0], combo[1], combo[2])

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!

❓ FAQ – Câu Hỏi Thường Gặp (Hiển thị trên bài viết)

1. Tại sao cần dùng sys.stdin = open(...)sys.stdout = open(...) khi giải đề thi HSG Tin học?

Trả lời: Trong các kỳ thi Học sinh giỏi Tin học, hệ thống chấm thi tự động (như Themis, CMS) sẽ đọc dữ liệu từ tệp .INP và ghi kết quả ra tệp .OUT. Việc sử dụng sys.stdinsys.stdout giúp đổi hướng luồng vào/ra chuẩn của Python, giúp bạn sử dụng các lệnh quen thuộc như input() hay print() mà vẫn đọc/ghi file chính xác tuyệt đối.

2. Bài toán tìm ước chính phương (Bài 1 USUM) chạy tối ưu nhất như thế nào?

Trả lời: Thay vì duyệt từ $1$ đến $N$ tốn thời gian $O(N)$, chúng ta chỉ cần duyệt từ $1$ đến $\sqrt{N}$. Với mỗi ước $d$ tìm được, ta xác định thêm ước $N / d$, sau đó kiểm tra xem hai ước này có phải là số chính phương hay không bằng hàm math.isqrt(). Cách này giảm độ phức tạp xuống $O(\sqrt{N})$, đảm bảo chạy dưới 1 giây ngay cả khi $N = 10^9$.

3. Khi nào nên dùng itertools.combinations trong các bài toán liệt kê bộ ba?

Trả lời: Bạn nên dùng itertools.combinations(a, 3) khi bài toán yêu cầu tìm các bộ 3 phần tử phân biệt từ một danh sách và số lượng phần tử $N$ nhỏ (ví dụ $N < 20$). Hàm này giúp mã nguồn ngắn gọn, tối ưu và tránh được việc viết nhiều vòng lặp for lồng nhau.

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àiFile

chương

trình

File dữ liệu

vào

File kết quả
Bài 1Phân loại cận thịD201.*D201.INPD201.OUT
Bài 2In 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 nD202.*D202.INPD202.OUT
Bài 3Đếm số lượng số trong mảng có tổng các ước là số lẻD203.*D203.INPD203.OUT
Bài 4Xóa các từ trùng lặp trong xâu sD204.*D204.INPD204.OUT
Bài 5Mã hóa xâu sD205.*D205.INPD205.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.75Can thi nhe
3.25Can 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

72
9
6
3
15
10
7
-2

 

 

51
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 moiToi moi mua mot chiec PC that su rat
Chiec PC moi chay that muotChiec 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 10bSX*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 !