Editorial for TRINNUM
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Submitting an official solution before solving the problem yourself is a bannable offence.
Subtask 1: ~1 ≤ N ≤ 200~
- Ta xét tất cả các cặp ba số và kiểm tra từng bộ ba.
- Độ phức tạp ~O(N^3)~.
Subtask 2: ~200 < N ≤ 2000~
- Gọi ~cs_x~ là số cặp số ~(i,j)~ mà ~(a_i ∗ a_j)%M = x~.
- Gọi ~f_u~ là số lượng số trong mảng ~a~ phần dư cho ~M~ bằng ~u~.
- Duyệt qua từng cặp số ~0 ≤ x,y < M~ nếu ~x ∗ y%M = 0~ thì tăng kết quả thêm ~cs_x ∗ f_y~.
- Độ phức tạp ~O(n^2)~.
Subtask 3: ~0 ≤ M ≤ 200~
- Gọi ~f_u~ là số lượng số trong mảng ~a~ phần dư cho ~M~ bằng ~u~.
- Duyệt qua từng bộ ba số ~0 ≤ i,j,k~ nếu ~i ∗ j ∗ k%M = 0~ thì tăng kết quả thêm ~f_i ∗ f_j ∗ f_k~.
- Độ phức tạp ~O(M^3)~.
Subtask 4: Không giới hạn gì thêm
- Gọi ~f_u~ là số lượng số trong mảng ~a~ phần dư cho ~M~ bằng ~u~.
- Kết hợp lời giải của subtask 2 và subtask 3.
- Gọi ~cm_x~ là tổng ~f_i ∗ f_j~ của các cặp ~(i,j)~ mà ~i ∗ j%M = x~.
- Duyệt qua từng cặp số ~0 ≤ i,j < M~ nếu ~i ∗ j%M = 0~ thì tăng kết quả thêm ~f_i ∗ cm_j~.
- Độ phức tạp ~O(M^2)~.
Comments