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()


