C4-05 · Tổng và chữ số lớn nhất

Xem dạng PDF

Gửi bài giải

Điểm: 1,00
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Nguồn bài:
Sách "Lập trình cơ sở với Python"
Dạng bài
Ngôn ngữ cho phép
Python

Đề

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ết n > 9 sẽ bỏ sót chữ số đầu (với n = 7 sẽ in 0 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 qua float: 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: (**)


Đang tải...