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.

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

Please read the guidelines before commenting.


There are no comments at the moment.