


You are given an array ‘ARR’ of size N. You have to construct a Product Array ‘P’ of the same size such that P[i] is equal to the product of all the elements of ARR except ARR[i]. The constraint is that you are not allowed to use the division operator.
For Example:
For an array {1, 2, 3, 4, 5}:
The required product array generated from the given array is {120, 60, 40, 30, 24 }
This can be generated in the following manner:
For generating 120 we have 2 * 3 * 4 * 5 i.e. the product of other array elements except 1.
For generating 60 we have 1 * 3 * 4 * 5 i.e. the product of other array elements except 2.
For generating 40 we have 1 * 2 * 4 * 5 i.e. the product of other array elements except 3.
For generating 30 we have 1 * 2 * 3 * 5 i.e. the product of other array elements except 4.
For generating 24 we have 1 * 2 * 3 * 4 i.e. the product of other array elements except 5.
The first line contains an Integer 'T' which denotes the number of test cases/queries to be run.
Then the test cases follow.
The first line of input for each test case/query contains an integer N representing the size of the array.
The second line of input for each test case/query contains N space-separated integers representing the elements of the array.
Output Format:
For each test case, print 'N' single space-separated integers denoting elements of the product array P.
Output for every test case will be printed in a separate line.
Note:
1. You do not need to print anything, it has already been taken care of. Just implement the function.
2. The value of P[i] will fit into a 64-bit data type.
1 <= T <= 50
1 <= N <= 10
1 <= ARR [i] <= 20
Time Limit: 1 sec
2
5
10 3 5 6 2
2
12 20
180 600 360 300 900
20 12
Test Case 1:
For the product array P,
At i=0 we have 3*5*6*2 = 180.
At i=1 we have 10*5*6*2 = 600.
At i=2 we have 10*3*6*2 = 360.
At i=3 we have 10*3*5*2 = 300.
At i=4 we have 10*3*5*6 = 900
So, the P array is 180 600 360 300 900
Test Case 2:
For the product array P,
At i=0, we have 20.
At i=1, we have 12.
So, the P array is 20 12.
Try to do as asked in the problem statement using the 2 for loops.
O(N^2), where N is the number of elements in the array.
Since we are iterating over the elements of the array in two nested for loops of size N. Therefore the time complexity here grows by the order O(N^2).
O(1), We are using constant extra space.