Điều hướng chính

Ngôn ngữ

Phím tắt

/
Chuyển đến ô tìm bài
g p
Đi đến bài tập
g c
Đi đến kỳ thi
g u
Đi đến người dùng
?
Mở trợ giúp phím tắt

Bài tập botuchiso

Bộ tứ chỉ số

Dễ Hashing (hàm băm)Số họcXử lý số lớn

  • 100 Điểm
  • 1.0s Thời gian
  • 256M Bộ nhớ
  • 50% Tỉ lệ AC
  • 1 Số AC

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

Chưa có bình luận nào.