Cho dãy gồm \(N\) số nguyên dương \(A_1, A_2, \dots, A_N\) và một số nguyên dương \(S\). Hãy đếm số bộ có thứ tự bốn chỉ số \((i, j, k, l)\) với \(1 \le i, j, k, l \le N\) (các chỉ số được phép trùng nhau) sao cho
\[A_i \cdot A_j + A_k \cdot A_l = S.\]
Hai bộ là khác nhau nếu chúng khác nhau ở ít nhất một vị trí trong bốn vị trí chỉ số. Đáp án có thể rất lớn (tối đa vào cỡ \(10^{24}\)), hãy in ra chính xác.
Input
- Dòng đầu chứa hai số nguyên \(N\) và \(S\).
- Dòng thứ hai chứa \(N\) số nguyên \(A_1, \dots, A_N\).
Output
In ra một số nguyên: số bộ chỉ số thoả mãn.
Constraints
- \(1 \le N, S \le 10^6\).
- \(1 \le A_i \le 10^6\).
- Các subtask: (40%) \(N \le 100\); (20%) \(N \le 1000\); (20%) \(N \le 10^5\); (20%) không ràng buộc thêm.
Sample Input 1
5 20
1 4 2 2 3
Sample Output 1
28
Sample Input 2
6 10
1 3 3 2 1 2
Sample Output 2
96
Explanation
Gọi \(c_v\) là số cặp chỉ số có thứ tự \((i, j)\) với \(A_i \cdot A_j = v\). Khi đó đáp án bằng \(\sum_{v=1}^{S-1} c_v \cdot c_{S-v}\). Ở ví dụ 1 tổng này bằng \(28\); ở ví dụ 2 bằng \(96\).
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.