C8-05 · Sĩ số theo lớp

Xem dạng PDF

Gửi bài giải

Điểm: 1,00
Giới hạn thời gian: 3.5s
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

Đề

Phòng đào tạo có danh sách n sinh viên, mỗi sinh viên ghi mã lớp của mình. Hãy in sĩ số (số sinh viên) của từng lớp, theo mã lớp tăng dần.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n.
  • n dòng tiếp theo, mỗi dòng là mã lớp của một sinh viên.

Kết quả

Mỗi lớp một dòng: mã lớp và sĩ số, cách nhau một dấu cách. Các dòng theo mã lớp tăng dần, so như chuỗi (thứ tự của sorted() trên chuỗi): ví dụ IT1 < IT10 < IT2.

Ràng buộc

  • ~1 \le n \le 10^5~.
  • Mã lớp gồm 1 đến 10 ký tự, mỗi ký tự là chữ cái in hoa A–Z hoặc chữ số.

Ví dụ

Dữ liệu vào:

3
IT2
IT1
IT2

Kết quả:

IT1 1
IT2 2

Giải thích ví dụ

Lớp IT2 có hai sinh viên (dòng 1 và dòng 3), lớp IT1 có một. Lớp IT2 gặp trước nhưng kết quả theo mã lớp tăng dần nên IT1 in trước.

Lưu ý

  • Dict duyệt theo thứ tự chèn; muốn theo mã tăng dần thì duyệt sorted(si_so) (mục 8.3).
  • Có thể có tới ~10^5~ lớp khác nhau: đếm bằng dict; gọi list.count() cho từng lớp sẽ quá chậm.

Nguồn: Bài C8-05, 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-05 (mục 8.9) · Mức: (**)


Đang tải...