5 đề thi Python học sinh giỏi tin học THCS có đáp án tài liệu ôn thi

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

Chào các em yêu thích tin học lập trình Python, để chuẩn bị cho kỳ thi tốt sắp tới thầy có soạn ra 5 đề thi Python học sinh giỏi tin học THCS có đáp án và tài liệu ôn thi  để các em thi cho tốt nhé!

Đầu tiên các em cần ôn tập lại tất cả kiến thức về các hàm, vòng lập for, while, cách tạo các hàm def cho tốt nhé ! Các em vào đường dẫn phía dưới nhé!

Tự học Python từ cơ bản đến nâng cao đến giải đề Miễn Phí tài liệu pdf.

Khóa học Python từ cơ bản đến nâng cao miễn phí

Khóa học Python từ cơ bản đến nâng cao miễn phí

  • Rồi sau khi ôn lại kiến thức đã học các em vào tự giải đề trước rồi xem đáp án sau nhé!
  • Hôm nay thầy sẽ giải đề thi học sinh giỏi tin học lập trình Python huyện Gò Công Đông, Tiền Giang.

PHÒNG GIÁO DỤC VÀ ĐÀO TẠO HUYỆN GÒ CÔNG ĐÔNG

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: 150 phút (Không kể thời gian giao đề)

Ngày thi: 14/02/2023

(Đề thi có 03 trang, 05 câu)

TỔNG QUAN CÁC BÀI THI:

Tên bài

File chương trình File dữ liệu vào

File kết quả

Câu 1. Công nhân CONGNHAN.* TT.INP KQ.OUT
Câu 2. Thăm bạn THAMBAN.* KANGAROO.INP KANGAROO.OUT
Câu 3. xếp hàng XEPHANG * XEPHANG.INP XEPHANG.OUT
Câu 4. Dãy nhị phân DAYNHIPHAN. * DAYNHIPHAN.INP DAYNHIPHAN.OUT
Câu 5.

 

Đổi tiền DOITIEN.*

 

DOITIEN.INP DOITIEN.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 NNLT khác

Câu 1:  Công nhân (4.0 điểm)

  • Diễn Giải:
    • Công ty A đưa rước cho N nhóm công nhân đi làm, nhóm thứ i cách công ty di km (i—1, 2, 3, …, N).
    • Công ty có M xe được đánh số từ 1 đến M (M>N) để phục vụ cho việc đưa rước các nhóm công nhân.
    • Xe thứ j có mức tiêu thụ xăng là vj đơn vị thể tích/km (j=l, 2, 3, . ., M).                                                                                    .
  • Yêu cầu: Hãy chọn N xe để phục vụ cho việc đưa các nhóm công nhân đi làm, mỗi xe chỉ phục vụ cho một nhóm, sao cho tổng chi phí xăng cần sử dụng là ít nhất.     •
  • Dữ liệu: Vào file văn bản TT.INP:                                                        Ị
    • Dòng đầu tiên chứa hai số nguyên dương N, M (N<M<200);
    • Dòng thứ hai chứa các sô nguyên dương dl, d2,…, dN;
    • Dòng thứ ba chứa các số nguyên dương vl, v2, …, vM;
    • Các số trên cùng một dòng được ghi cách nhau bởi dấu cách. I
  • Kết quả: Ghi ra file văn bản KQ.OUT:
    • Dòng đầu tiên chứa tổng lượng xăng cần dùng cho việc đưa rước công nhân (không tính lượt về);
    • Dòng thứ 2 trở đi ghi chỉ số xe đã sử dụng để chở công nhân.
  • Ví dụ: 
TT.INP KQ.OUT
47 454
6 1115 12 2
15 13 19 10 11 20 9 4
5
7

Câu 2: Thăm bạn (4.0 điểm)

  • Diễn Giải:
    • Một chú Kangaroo muốn đi thăm một người bạn cách đó một khoảng n (đơn vị dm). Kangaroo chỉ có hai cách di chuyển, một là nhảy ngắn a (đơn vị dm), hai là nhảy dài b (đon vị dm).
    • Hỏi chú Kangaroo cần nhảy ít nhât bao nhiêu bước nhảy để đến được nhà người bạn (phải nhảy vừa đủ, không nhảy quá nhà bạn).
  • Dữ liệu vào từ file: INP gồm ba số nguyên dương n, a, b cách nhau một khoảng trắng (l<n<109, l<a< b<50).
  • Kết quả ra file: KANGAROO.OUT
    • Dòng 1 ghi tổng số bước nhảy ít nhất của chú
    • Dòng 2 cho biết số bước ngắn, số bước dài.
KANGAROO.INP KANGAROO.OƯT
21 25

 

6

3 ngan, 3 dai

Câu 3: Xếp hàng ( 4.0 điểm )

  • Diễn giải:
    • Trong giờ sinh hoạt tập thể, lớp 9A có n học sinh (n<45) xếp thành hàng dọc.
    • Mỗi học sinh có chiều cao a[i] (i=l, 2, 3,….n).
    • Em hãy viết chương trình đếm số bạn có chiều cao bằng nhau nhiều nhất.
  • Dữ liệu vào từ file:  XEPHANG.INP
    • Dòng thứ nhất chứa số tự nhiên n.
    • Dòng thứ hai gồm n số tự nhiên a[i], mỗi số ứng với chiều cao của từng bạn (đơn vị cm), các số cách nhau một khoảng trắng.
  • Kết quả ra file: XEPHANG.OUT
    • Dòng thứ nhất: Ghi tổng số bạn có chiều cao bằng nhau nhiều nhất.
    • Dòng số 2: Ghi các chiều cao tương ứng.
  • Ví dụ:
XEPHANG.INP XEPHANG.OUT
10 3
160 156 158 160 159 158 159 160 158 161 158
160

Câu 4: Dãy nhị phân (4.0 điểm)

Diễn giải: Cho dãy nhị phân có độ dài là n. Hãy kiểm tra dãy nhị phân này có chứa các sô 0 và 1 xen kẽ nhau không?

Dữ liệu: Vào từ file văn bản DAYNHIPHAN.INP gồm :

  • Dòng đầu chứa số nguyên n (l<n<106)
  • Dòng thứ 2 chứa dãy nhị phân có độ dài n

Kết quả:

  • Ghi ra file văn ban DAYNHIPHAN.OUT chữa chữ “YES” nếu đó là dãy chứa các số 0 và 1 xen kẽ nhau, ngược lại ghi “NO”.
  • Dòng thứ 2 là số thập phân tương ứng được đổi từ hệ nhị phân sang hệ thập phân.
  • Lưu ý cách đổi số từ hệ nhị phân (ví dụ 1101) sang hệ thập phân:
  • 1×23 + 1×22 + 0x21 +1×2° = 8+4+0+1=13
DAYNHIPHAN.INP DAYNHIPHAN.OUT
5 YES
10101 21

Câu 5: Đổi tiền(4 0 điểm)

  • Diễn giải: Em hãy viết chương trình đổi số tiền N ( N là số nguyên và 0<=N<1000000) sang chuỗi tương ứng?
  • Dữ liệu vào từ file: DOITIEN.INP
    • Gồm một dòng chứa số tự nhiên n.                                                                    I
  • Kết quả ra file: DOITIEN.OUT
    • Gồm một dòng ghi số tiền bằng chữ tương ứng
  • Ví dụ:
DOITIEN.INP DOITIEN.OUT
0 Khong dong
98 Chin muoi tam dong
809 Tam tram le chin dong
605305 Sau tram le nam nghin ba tram le nam dong
999999 Chin tram chin muoi chin nghin chin tramf chin muoi chin dong

………………………………………………………Hết……………………………………………….

Thí sinh không được sử dụng tài liệu. Cán bộ coi thi không giải thích gì thêm.

Đáp án tin học lập trình python câu 2 thăm bạn:

 

import sys
sys.stdin=open('KANGAROO.INP','r')
sys.stdout=open('KANGAROO.OUT','w')
n,a,b=map(int,input().split())
tong=0
k=[]
for i in range(1,n):
    for j in range(1,n):
        if i*a+j*b==n:
            tong=i+j
            k.append(tong)
Min=min(k)
for i in range(1,n):
    for j in range(1,n):
        if i*a+j*b==n and i+j==Min:
            print(Min)
            print(i,' ngan,',j,' dai',sep='')
            break

Đáp án tin học lập trình python câu 3 xếp hàng:

import sys
sys.stdin=open('XEPHANG.INP','r')
sys.stdout=open('XEPHANG.OUT','w')
n=int(input())
a=list(map(int,input().split()))
b=a.copy()
i=0
while i<len(b)-1:
    j=i+1
    while j<len(b):
        if b[i]==b[j]:
            b.pop(j)
        else:
            j+=1
    i+=1
c=[]
for i in range(len(b)):
    c.append(a.count(b[i]))
Max=max(c)
dem=0
e=[]
for i in range(len(b)):
    if a.count(b[i])==Max:
        e.append(b[i])
        dem+=1

if dem>0:
    print(Max)
    for i in sorted(e):
        print(i)

Đáp án tin học lập trình python câu 4 dãy nhị phân:

 

import sys
sys.stdin=open('DAYNHIPHAN.INP','r')
sys.stdout=open('DAYNHIPHAN.OUT','w')
n=int(input())
s=input()
s=list(s)
dk=1
for i in range(len(s)-1):
    if (s[i]=="1" and s[i+1]=='1') or (s[i]=="0" and s[i+1]=='0'):
        dk=0
if dk==1:
    print('Yes')
else:
    print('No')
tong=0
for i in range(len(s)):
    tong+=int(s[i])*(2**(len(s)-1-i))
print(tong)

Đáp án tin học lập trình python câu 5 đổi tiền:

 

import sys
sys.stdin=open('DOITIEN.INP','r')
sys.stdout=open('DOITIEN.OUT','w')
def chuadauhoa(s):
    s=list(s)
    a=[]
    a.append(s[0].uper())
    for i in range(1,len(s)):
        a.append(s[i])
    return a
s=input()
s=list(s)
print(s)
b=[]
for i in range(len(s)):
    b.append(int(s[i]))
print(b)
a=['khong','mot','hai','ba','bon','nam','sau','bay','tam','chin']
c=[]
for i in b:
    c.append(a[i])
print(c)
if len(c)>=3:
    for i in range(len(c)):
        if c[i]=='khong':
            c[i]='le'
if len(c)==1:
    print(c[0],end='')
elif len(c)==2:
    if c[0]=='le':
        print(c[0],c[1],end='')
    else:
        print(c[0],'muoi',c[1],end='')
elif len(c)==3:
    if c[1]=='le':
        print(c[0],'tram',c[1],c[2],end='')
    else:
        print(c[0],'tram',c[1],'muoi',c[2],end='')
elif len(c)==4:
    if c[2]=='le':
        print(c[0],'nghin',c[1],'tram',c[2],c[3],end='')
    else:
        print(c[0],'nghin',c[1],'tram',c[2],'muoi',c[3],end='')
elif len(c)==5:
    if c[3]=='le':
        print(c[0],'muoi',c[1],'nghin',c[2],'tram',c[3],c[4],end='')
    else:
        print(c[0],'muoi',c[1],'nghin',c[2],'tram',c[3],'muoi',c[4],end='')
elif len(c)==6:
    if c[4]=='le' and c[1]=='khong':
        print(c[0],'tram',c[1],'muoi',c[2],'nghin',c[3],'tram',c[4],c[5],end='')
    elif c[1]=='le' and c[4]=='le':
        print(c[0],'tram',c[1],c[2],'nghin',c[3],'tram',c[4],c[5],end='')
    else:
        print(c[0],'tram',c[1],'muoi',c[2],'nghin',c[3],'tram',c[4],'muoi',c[5],end='')
print(' dong')

Chú ý: bài đáp án chỉ có tính chất tham khảo bạn nào có cách giải hay hơn, hoặc có cách giải khác hãy đăng ký và để lại bình luận mình sẽ giải thích cho 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é !

Giải đề 2 có đáp án thi HSG tin học python chuyên tin Tiền Giang năm 2024 – 2025

Đề thi HSG chuyên tin tiền giang 2024 - 2025

10 đề thi đáp án thi Python

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

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

  • Hotline: 093.717.9278 ( Gặp Tấn Dân Cử Nhân Công Nghệ Thông Tin)
  • Website: vitinhtandan.com
  • Email: vitinhtandan@gmail.com

 

No Comments

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