C8-02 · Tần suất chữ số
Xem dạng PDFĐề
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ằngint()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: (*)