Giải đề thi học sinh giỏi tin lớp 12-Lâm Đồng (Phần 1)
Tên kỳ thi
Kỳ thì chọn học sinh giỏi cấp tỉnh lớp 12, năm học 2021 – 2022. Sở Giáo dục và Đào tạo Lâm Đồng.
Ngày thi
Ngày: 07/01/2022.
Đề bài
Câu 1. Tên file bài làm: KTS.*
Chiều dài của một số tự nhiên là số chữ số của số đó. Độ cao của một số tự nhiên là tổng các chữ số của số đó.
Yêu cầu: Cho số tự nhiên x ghi trong hệ đếm cơ số 10. Tìm chiều dài và độ cao của x.
Dữ liệu vào: từ file văn bản KTS.INP
- Ghi số tự nhiên x (1 ≤ x ≤ 1019)
Kết quả: Ghi ra file văn bản KTS.OUT
- Chiều dài và độ cao của x, các số các nhau một dấu cách.
Hướng dẫn làm bài
Thầy sử dụng ngôn ngữ lập trình Python nên thầy sẽ có hướng tiếp cận của Python. Các em làm bài bằng C/C++ thì có thể có cách trình bày khác thầy.
- Đầu tiên, mở và đọc file đầu vào. Tuy nhiên, ta sẽ đọc dữ liệu và lưu dữ liệu đọc được vào một string.
- Vì toàn bộ dữ liệu (một số nguyên trong file) là một string, nên thầy phân tách lần lượt từng ký tự là một chữ số và lưu vào trong một Danh sách List.
- Đến đây, công việc trở nên dễ dàng rồi, các em tìm chiều dài của số nguyên bằng cách tìm chiều dài của Danh sách. Tìm độ cao bằng cách tính tổng các phần tử trong Danh sách.
Code tham khảo
# Xây dựng hàm
"""
Hàm đọc dữ liệu từ tệp đầu vào
"""
def Doc_File(fileName):
# Mở tệp ra để đọc
f = open(fileName, mode="r")
pre_data = f.readline()
# Chuyển đổi sang dạng danh sách các chữ số
lst = []
for i in range(len(pre_data)):
lst.append(pre_data[i])
lst.remove("\n") # Loại bỏ phần tử kết thúc sâu
# Đóng tệp
f.close()
# Trả về danh sách các chữ số
return lst
"""
Hàm tính chiều dài
"""
def Tinh_Chieu_Dai(lst):
return len(lst)
"""
Hàm tính chiều cao
"""
def Tinh_Chieu_Cao(lst):
s = 0
for i in lst:
s += int(i)
return s
"""
Hàm ghi vào file đầu ra
"""
def Ghi_File(fileName, chieu_dai, chieu_cao):
f = open(fileName, mode="w")
f.write(str(chieu_dai))
f.write(" ")
f.write(str(chieu_cao))
f.close() # Đóng tệp
# ===main===
if __name__ == '__main__':
lst = Doc_File("KTS.INP")
print("Chieu dai:", Tinh_Chieu_Dai(lst))
print("Chieu cao:", Tinh_Chieu_Cao(lst))
Ghi_File("KTS.OUT", Tinh_Chieu_Dai(lst), Tinh_Chieu_Cao(lst))
1 phản hồi
[…] Cùng trong một đề này, bài 1 […]