Soát lỗi đếm buổi tập trùng giờ trên FitTrack
Thang điểm 10 · 5 test case chấm tự động · 4 tiêu chí chấm
Ứng dụng thể thao FitTrack lưu lại giờ bắt đầu (số nguyên từ 0 đến 23) của n buổi tập trong ngày. Hai lập trình viên đưa ra hai đoạn mã để đếm số cặp buổi tập bắt đầu cùng giờ (mỗi cặp chỉ được tính đúng 1 lần):
Đoạn mã A (nghi có lỗi):
count = 0for i in range(n):for j in range(n):if i != j and a[i] == a[j]:count = count + 1
Đoạn mã B:
count = 0for i in range(n):for j in range(i + 1, n):if a[i] == a[j]:count = count + 1
Đoạn mã A đếm mỗi cặp trùng giờ hai lần (một lần khi i<j, một lần khi i>j) nên kết quả bị sai gấp đôi so với thực tế, dù cả hai đoạn đều có độ phức tạp thời gian dạng O(n^2).
Hãy viết lại chương trình đúng (theo cách làm của đoạn mã B): đọc số nguyên n và n số nguyên là giờ bắt đầu của các buổi tập, in ra số cặp buổi tập trùng giờ (mỗi cặp tính đúng 1 lần), sau đó in ra bậc độ phức tạp thời gian của chương trình dưới dạng O(n^2).
Định dạng vào: dòng 1 chứa n; dòng 2 chứa n số nguyên là giờ bắt đầu (0-23), cách nhau bởi khoảng trắng.
Định dạng ra: dòng 1 là số cặp trùng giờ; dòng 2 là chuỗi O(n^2).
| Input | Output | Giải thích |
|---|---|---|
| 5 8 9 8 10 9 | 2 O(n^2) | Giờ 8 xuất hiện 2 lần (1 cặp), giờ 9 xuất hiện 2 lần (1 cặp) → tổng 2 cặp |
| 3 1 2 3 | 0 O(n^2) | Không có giờ nào trùng nhau |
Giáo viên giao bài này cho lớp, học sinh nộp bài trực tuyến và được chấm tự động.
Giáo viên đăng nhập để giao bàiBài tập khác lớp 11
- Ước lượng thời gian chấm điểm bài thi trắc nghiệm · Lập trình
- Đo đường chéo sân tập thể thao · Lập trình
- Chồng sách trên bàn học · Lập trình
- Thống kê quãng đường chạy bộ của CLB · Lập trình
- Đếm số cách đóng gói đều sản phẩm · Lập trình
- Theo dõi số bước chân của nhóm tập luyện · Lập trình