SỐ HOÀN HẢO THỨ K
Viết chương trình tìm số nguyên dương hoàn hảo thứ K, biết rằng số nguyên dương hoàn hảo là số có tổng các chữ số bằng 10. Ví dụ, 5 số nguyên dương hoàn hảo đầu tiên là: 19, 28, 37, 46, 55.
Đầu vào: Tệp sohoanhao.inp.
+ Dòng 1: N là số lượng số K.
+ Dòng 2: Lần lượt các số K muốn tìm phân cách nhau một khoảng trắng.
Đầu ra: Số nguyên dương hoàn hảo thứ K tương ứng lần lượt lưu vào tệp sohoanhao.out.
Ví dụ:
sohoanhao.inp | sohoanhao.out |
2 | 19 28 |
1 2 | |
3 | 55 73 91 |
5 7 9 |
Code mẫu
# Thực hiện tạo biến fi để mở file ra đọc fi = open("baitap.inp","r",encoding ="utf-8") # Thực hiện tạo biến fo để mở file ra ghi fo = open("baitap.out","w",encoding ="utf-8") # Xây dựng hàm kiểm tra số hoàn hảo def kTra(n): return sum(map(int,str(n)))==10 # Xây dựng hàm kiểm tra số hoàn hảo thứ k def timsoHH(k): dem = 0 n = 1 while True: if kTra(n): dem+=1 if dem==k: return n n+=1 # Tạo biến đọc file doc - đọc từng dòng trong file baitap.inp doc = fi.readline() doc = int(doc) # Ghi kết quả vào file fo print(f"Số hoàn hảo thứ {doc} là:",end=" ", file=fo) print(timsoHH(doc), file=fo) print("Đã ghi xong!") fi.close() fo.close()
Bonus
Viết chương trình tính tổng các giá trị từ tệp tong.inp, ghi kết quả vào tệp tong.out
+ Đầu vào: Tệp tong.inp,
Dòng thứ nhất là n số phần tử tính tổng.
Dòng thứ hai là lần lượt n phần tử.
+ Đầu ra: Tổng n phần tử ghi trên 1 dòng duy nhất vào tệp tong.out.
Ví dụ:
tong.inp | tong.out |
3 | 66 |
11 22 33 |
fi = open("tong.inp","r",encoding ="utf-8") fo = open("tong.out","w",encoding ="utf-8") doc1 = int(fi.readline()) doc2 = list(map(int,fi.readline().split())) t = 0 for i in doc2: t+=i print(t, file=fo) print("Đã ghi xong!") fi.close() fo.close()