C8-03 · Số giá trị khác nhau

Xem dạng PDF

Gửi bài giải

Điểm: 1,00
Giới hạn thời gian: 4.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 dãy n số nguyên. Hãy cho biết dãy có bao nhiêu giá trị khác nhau, rồi liệt kê các giá trị đó theo thứ tự tăng dần.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n.
  • Dòng thứ hai chứa n số nguyên, cách nhau một dấu cách.

Kết quả

  • Dòng 1: số giá trị khác nhau.
  • Dòng 2: các giá trị khác nhau theo thứ tự tăng dần (so như số, không phải như chuỗi), cách nhau một dấu cách.

Ràng buộc

  • ~1 \le n \le 2 \cdot 10^5~.
  • Mỗi số nằm trong đoạn ~[-10^9;\ 10^9]~.

Ví dụ

Dữ liệu vào:

5
3 1 3 2 1

Kết quả:

3
1 2 3

Giải thích ví dụ

Dãy 3 1 3 2 1 có ba giá trị khác nhau là 1, 2, 3 (số 3 và số 1 mỗi số xuất hiện hai lần nhưng chỉ tính một lần). Dòng hai in chúng tăng dần.

Lưu ý

  • Thứ tự phần tử trong một set không phải thứ tự tăng dần; luôn in bằng sorted(...) (mục 8.5).
  • Phải đổi sang số trước khi sắp: theo thứ tự chuỗi thì "10" đứng trước "9".
  • n tới ~2 \cdot 10^5~: loại trùng bằng list (if x not in ds) phải so lần lượt nên quá chậm; set kiểm tra "đã có chưa" rất nhanh.

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


Đang tải...