C6-08 · Trung vị

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

Đề

Giá thuê (triệu đồng) của ~n~ phòng trọ đã được ghi lại. Chỉ một phòng quá đắt cũng kéo trung bình cộng lên cao, nên người ta xem trung vị: giá trị đứng giữa khi xếp các giá tăng dần; nếu ~n~ chẵn thì trung vị là trung bình cộng của hai giá trị đứng giữa.

Viết hàm trung_vi(ds) không làm đổi thứ tự của ds; chương trình đọc dãy số thực và in trung vị với 2 chữ số thập phân.

Dữ liệu vào

  • Dòng 1: số nguyên ~n~.
  • Dòng 2: ~n~ số thực (giá thuê), cách nhau một dấu cách; mỗi số viết dạng số nguyên hoặc có đúng một chữ số thập phân.

Kết quả

Một dòng: trung vị, đúng 2 chữ số thập phân.

Ràng buộc

  • ~1 \le n \le 100~.
  • ~0{,}1 \le~ giá ~\le 1000~, tối đa một chữ số thập phân.

Ví dụ

Dữ liệu vào:

6
3.5 2.8 6.5 3.0 4.2 9.0

Kết quả:

3.85

Giải thích ví dụ

Xếp tăng dần: 2.8 3.0 3.5 4.2 6.5 9.0. Có ~n = 6~ (chẵn) giá, hai giá trị đứng giữa ở chỉ số 2 và 3 là 3,5 và 4,2; trung vị ~\dfrac{3{,}5 + 4{,}2}{2} = 3{,}85~. Còn trung bình cộng là ~29/6 \approx 4{,}83~ — bị phòng giá 9 triệu kéo lên.

Với ~n~ lẻ, ví dụ 2.8 3.0 3.5, trung vị là giá đứng giữa 3.5, in 3.50.

Lưu ý

  • Phải sắp xếp trước. Dùng sorted(ds) (tạo danh sách mới); ds.sort() trả về None, đừng gán kết quả của nó.
  • Chỉ số hai giá trị giữa khi ~n~ chẵn là n // 2 - 1 và n // 2; dùng // vì chỉ số phải là số nguyên.
  • Đọc bằng float trước khi sắp xếp: sắp xếp chuỗi cho "10.5" < "9.5".
  • Hệ thống chỉ chấm kết quả; yêu cầu "hàm không đổi thứ tự ds" do giảng viên xem khi chấm tay.

Nguồn trong sách: Bài C6-08, 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...