[HueICT 2026] Dãy ước số
Xem dạng PDF
Gửi bài giải
Điểm:
0,01 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
1G
Input:
stdin
Output:
stdout
Dạng bài
Ngôn ngữ cho phép
C, C++, C++20, Java, Kotlin, Pascal, PyPy, Python, Scratch
Cho dãy số nguyên dương ~A~ gồm ~N~ phần tử ~A_1, A_2, \ldots, A_N~.
Với mỗi phần tử ~A_i~, ta xét tất cả các ước số dương của ~A_i~ và thêm chúng vào một dãy mới ~D~.
Lưu ý rằng nếu một ước số xuất hiện nhiều lần (từ các phần tử khác nhau), thì nó cũng được thêm vào ~D~ tương ứng số lần đó.
Sau khi xử lí tất cả các phần tử, ta thu được dãy ~D~.
Tiếp theo, sắp xếp dãy ~D~ theo thứ tự không giảm.
Yêu cầu
Cho ~Q~ truy vấn. Mỗi truy vấn gồm một số nguyên dương ~x~.
Với mỗi truy vấn, hãy tìm phần tử thứ ~x~ trong dãy ~D~ sau khi đã sắp xếp.
Input
- Dòng đầu tiên chứa hai số nguyên ~N, Q~.
- Dòng thứ hai chứa ~N~ số nguyên dương ~A_1, A_2, \ldots, A_N~.
- ~Q~ dòng tiếp theo, mỗi dòng chứa một số nguyên dương ~x~.
Output
In ra ~Q~ dòng, mỗi dòng là giá trị ~D[x]~ tương ứng với truy vấn.
Ràng buộc
- ~1 \le N \le 10^6~
- ~1 \le Q \le 10^5~
- ~1 \le A_i \le 10^6~
- ~1 \le x \le |D|~
Subtasks
- Subtask 1 (20%): ~N, Q, A_i \le 2000~
- Subtask 2 (20%): Tất cả ~A_i~ là số nguyên tố
- Subtask 3 (20%): ~N \le 10^4~, và mọi truy vấn có ~x \le 2 \times 10^6~
- Subtask 4 (20%): Mọi truy vấn có ~x \le 2 \times 10^6~
- Subtask 5 (20%): Không có ràng buộc bổ sung
Ví dụ
Input
3 4
3 6 2
1
3
6
8
Output
1
1
3
6
Giải thích
- ~3 \to 1, 3~
- ~6 \to 1, 2, 3, 6~
- ~2 \to 1, 2~
Dãy ~D~: ~[1,3,1,2,3,6,1,2]~
Sắp xếp: ~[1,1,1,2,2,3,3,6]~
- ~x=1 \to 1~
- ~x=3 \to 1~
- ~x=6 \to 3~
- ~x=8 \to 6~
Bình luận