POLYMUL - Polynomial Multiplication
Sam and Dean fight the supernatural creatures to protect the humans. Now they have come across a creature called the Vedala, which are always found in pairs. Each Vedala can be represented by a polynomial. Both the Vedalas need to be killed at once or else they can't be killed. They can be killed only by using the product of the two polynomials representing the two Vedala. Help Sam and Dean find the product of the polynomials fast, so they can do their work.
First line contains an integer T (≤ 10), number of test cases.
Each test case will have n (n ≤ 10000), maximum degree of the polynomials on the first line.
Next two lines will have n+1 space separated integers each representing the coefficients of first and second polynomials respectively.
All input coefficients values are <=1000.
For each test case output a line of 2n space separated integers indicating coefficients of the polynomial created after multiplication.
Input: 2 2 1 2 3 3 2 1 2 1 0 1 2 1 0 Output: 3 8 14 8 3 2 1 2 1 0
1st test case n=2, the polynomials are x^2 + 2x + 3 and 3x^2 + 2x + 1.
On multiplying we get 3x^4 + 8x^3 + 14x^2 + 8x + 3 and hence the answer is 3 8 14 8 3.
2nd test case n=2, the polynomials are x^2 + 1 and 2x^2 + x.
On multiplying we get 2x^4 + x^3 + 2x^2 + x and hence the answer is 2 1 2 1 0.
Yes, optimized brute force with fast language like c++ has approx the same running time as FFT in a slow language like Java. C++ BF ~ 0.77s while FFT Java ~0.70sLast edit: 2021-05-25 12:12:09
why my n^2 solution get passed?
The coefficients will not fit in 32-bit integer.
Use long long in place of int for coefficients it causes me 1 WA
Accepted with plain brute algo with O(n^2) time also.
I'm kind of dissapointed...Before trying to write my first Karatsuba,I tested if this problem would pass with using optimised(fast input) O(n^2) algorithm in C++ and it turns out it does pass...Well atleast you can compare your Karatsuba/FFT time with your O(N^2) algorithm.Constraints should have been 10^5 and then it would be funLast edit: 2017-08-12 17:37:35
Just FYI: You have to print 2*n + 1 values.
Mateus Gonçalves de Oliveira [ITA]:
Be careful with the limits. The coefficients might not fit in a 32bit integer.