Cho 3 dãy N số nguyên A1, A2, ..., An, B1, B2, ..., Bn và C1, C2, ..., Cn. Hãy đếm số bộ 3 (Ai,Bj,Ck) thỏa mãn Ai + Bj = Ck.
- Dòng thứ 2 ghi N số nguyên có giá trị tuyệt đối không vượt quá 50000 thể hiện dãy A.
- Dòng thứ 3 và thứ 4 lần lượt ghi dãy B và C theo quy cách tương tự.
 và
 và  , tính đa thức
, tính đa thức  . Nghĩa là tìm các hệ số
. Nghĩa là tìm các hệ số  của đa thức
 của đa thức  (Do
 (Do  có bậc
  có bậc  nên
 nên  có bậc lớn nhất là
 có bậc lớn nhất là  ).
).
Công thức của các hệ số là
 là
 
trong đó nếu ta đặt
 ta đặt  . Như vậy, để tính tất cả các hệ số của đa thức
. Như vậy, để tính tất cả các hệ số của đa thức  bằng công thức trên ta cần
 bằng công thức trên ta cần  phép tính. Tuy nhiên, ta có thể tính các hệ số của đa thức
 phép tính. Tuy nhiên, ta có thể tính các hệ số của đa thức  chỉ với độ phức tạp
 chỉ với độ phức tạp  bằng phép biến đổi Fourier nhanh (Fast Fourier Transform – FFT). (tham khảo)
 bằng phép biến đổi Fourier nhanh (Fast Fourier Transform – FFT). (tham khảo)
- Bây giờ ta biểu diễn dãy số a[i] thành dạng đa thức có bậc:
ví dụ: A={1,2,3} thành $ \color{green} f(x)=x^1+x^2+x^3 $
hoặc: B={2,3,3,4} thành g(x)=x^2+2x^3+x^4 ....
Khi nhân f(x) với g(x) ta quan tâm đến số mũ. Đó chính là tổng $ \color{green} Ai+Bj$.
- github.com
Input
- Dòng đầu ghi số N. ( N <= 105 )- Dòng thứ 2 ghi N số nguyên có giá trị tuyệt đối không vượt quá 50000 thể hiện dãy A.
- Dòng thứ 3 và thứ 4 lần lượt ghi dãy B và C theo quy cách tương tự.
Output
- Số bộ 3 thỏa mãn.Example
Input: 3 -1 1 1 -1 2 3 2 3 -2 Output: 4
| Thời gian chạy: | 0.25s | 
| Giới hạn mã nguồn: | 50000B | 
| Memory limit: | 1536MB | 
Thuật toán
- Nhận xét: Cho 2 đa thứcCông thức của các hệ số
trong đó nếu
- Bây giờ ta biểu diễn dãy số a[i] thành dạng đa thức có bậc:
ví dụ: A={1,2,3} thành $ \color{green} f(x)=x^1+x^2+x^3 $
hoặc: B={2,3,3,4} thành g(x)=x^2+2x^3+x^4 ....
Khi nhân f(x) với g(x) ta quan tâm đến số mũ. Đó chính là tổng $ \color{green} Ai+Bj$.
Mã nguồn:
- ideone.com- github.com

 





 
 
 
 
 
 
 
 
