C8-02 · Tần suất chữ số

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 một số nguyên dương rất dài. Hãy đếm mỗi chữ số xuất hiện bao nhiêu lần. In mỗi chữ số có mặt trong số đó cùng số lần xuất hiện, theo chữ số tăng dần.

Số có thể dài tới ~10^5~ chữ số, nên hãy đọc nó như một chuỗi (đúng như sách gợi ý), mỗi ký tự là một chữ số.

Dữ liệu vào

Một dòng chứa số nguyên dương (không có chữ số 0 ở đầu).

Kết quả

Mỗi dòng gồm một chữ số và số lần nó xuất hiện, cách nhau một dấu cách; các dòng theo chữ số tăng dần. Chữ số không có mặt thì không in.

Ràng buộc

  • Số có từ 1 đến ~10^5~ chữ số.

Ví dụ

Dữ liệu vào:

30133

Kết quả:

0 1
1 1
3 3

Giải thích ví dụ

Số 30133 có chữ số 3 xuất hiện 3 lần, 0 và 1 mỗi chữ số một lần. Thứ tự xuất hiện là 3, 0, 1 nhưng kết quả phải theo chữ số tăng dần: 0, 1, 3. Các chữ số 2, 4, …, 9 không có mặt nên không in.

Lưu ý

  • Từ Python 3.11, int() từ chối chuỗi dài hơn 4300 chữ số (ValueError), nên cách "đọc bằng int() rồi tách chữ số bằng % 10" sẽ bị Runtime Error ở test dài.
  • Dict duyệt theo thứ tự chèn (mục 8.1.3); muốn theo chữ số tăng dần thì duyệt sorted(dem).

Nguồn: Bài C8-02, mục 8.9, giáo trình Lập trình cơ sở với Python — TS. Nguyễn Quốc Long.

Nguồn trong sách: bài tập C8-02 (mục 8.9) · Mức: (*)


Đang tải...