C4-05 · Tổng và chữ số lớn nhất
Xem dạng PDFĐề
Cho số nguyên dương n. In tổng các chữ số của n và chữ số lớn nhất của n. Yêu cầu tách chữ số bằng % 10 và // 10 (mục 4.6.3), không đổi n sang chuỗi.
Máy chấm chỉ so kết quả, không xem cách làm: lời giải đổi sang chuỗi vẫn được chấm đúng; yêu cầu "không đổi sang chuỗi" là để bạn tự rèn (giảng viên có thể kiểm khi chấm tay).
Dữ liệu vào
Một dòng chứa số nguyên dương n (viết không có số 0 ở đầu).
Kết quả
Một dòng gồm hai số nguyên cách nhau một dấu cách: tổng các chữ số và chữ số lớn nhất của n.
Ràng buộc
- 1 ≤ n ≤ 10¹⁸ (n có tới 19 chữ số; số nguyên Python không bị tràn).
Ví dụ
Dữ liệu vào:
50729
Kết quả:
23 9
Giải thích ví dụ
Mỗi vòng lặp lấy chữ số cuối bằng n % 10 rồi bỏ nó bằng n // 10, dừng khi n về 0:
| Vòng | n | n % 10 |
Tổng | Lớn nhất |
|---|---|---|---|---|
| 1 | 50729 | 9 | 9 | 9 |
| 2 | 5072 | 2 | 11 | 9 |
| 3 | 507 | 7 | 18 | 9 |
| 4 | 50 | 0 | 18 | 9 |
| 5 | 5 | 5 | 23 | 9 |
| 0 | (dừng) |
Tổng các chữ số là 5 + 0 + 7 + 2 + 9 = 23, chữ số lớn nhất là 9.
Ghi chú
- Điều kiện lặp là
n > 0. Viếtn > 9sẽ bỏ sót chữ số đầu (với n = 7 sẽ in0 0). - Phải dùng
//(chia lấy phần nguyên);/cho số thực và kết quả sai. - Nếu tính tổng trong một vòng lặp rồi tìm chữ số lớn nhất trong vòng lặp thứ hai thì phải lưu bản sao của n: sau vòng đầu n đã bằng 0.
- Đọc n bằng
int(input()), không quafloat: số thực chỉ giữ được khoảng 15–16 chữ số.
Nguồn trong sách: Bài C4-05, mục 4.10, giáo trình Lập trình cơ sở với Python — TS. Nguyễn Quốc Long · Mức: (**)