C6-13 · Điểm danh bằng thẻ
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:
Dạng bài
Ngôn ngữ cho phép
Python
Đề
Máy điểm danh ghi lại mã sinh viên mỗi lần quét thẻ; có người quét nhiều lần. Từ danh sách ~n~ lần quét, hãy in:
- các mã không trùng, theo thứ tự quét lần đầu;
- số lần quét thừa (tổng số lần quét trừ số sinh viên khác nhau).
Chỉ dùng danh sách và toán tử in (chưa dùng set, dict).
Dữ liệu vào
- Dòng 1: số nguyên ~n~ — số lần quét.
- Dòng 2: ~n~ mã sinh viên, cách nhau một dấu cách. Mỗi mã gồm đúng 8 chữ số (có thể bắt đầu bằng chữ số 0).
Kết quả
- Dòng 1: các mã khác nhau theo thứ tự xuất hiện lần đầu, cách nhau một dấu cách, viết đúng như dữ liệu vào.
- Dòng 2: số lần quét thừa.
Ràng buộc
- ~1 \le n \le 1000~.
- Mã gồm đúng 8 chữ số
0–9.
Ví dụ
Dữ liệu vào:
5
23010004 23010001 23010004 23010007 23010004
Kết quả:
23010004 23010001 23010007
2
Giải thích ví dụ
Có 3 sinh viên khác nhau, xuất hiện lần đầu theo thứ tự 23010004, 23010001, 23010007. Sinh viên 23010004 quét 3 lần, thừa 2 lần; tổng số lần quét thừa ~5 - 3 = 2~.
Lưu ý
- Mã sinh viên là chuỗi chữ số, không phải số: đổi sang
intthì00123456thành123456(mục 6.9 giữ mã ở dạng chuỗi). - "Số lần quét thừa" không phải "số người quét trùng": một người quét 3 lần là thừa 2 lần.
- Không sắp xếp; không xóa phần tử khỏi danh sách đang duyệt (mục 6.10).
- Lưu các mã đã gặp trong một danh sách rồi kiểm bằng
in. Đừng ghép các mã thành một chuỗi dài:intrên chuỗi là tìm chuỗi con, nên mã56789012bị coi là "đã gặp" trong"1234567890123456"dù chưa ai quét mã đó.
Nguồn trong sách: Bài C6-13, mục 6.12, giáo trình Lập trình cơ sở với Python — TS. Nguyễn Quốc Long · Mức: (***)
Đang tải...