# Sum of product of all pairs of array elements

Given an array A[] of integers find sum of product of all pairs of array elements i. e., we need to find of product after execution of following pseudo code

```product = 0
for i = 1:n
for j = i+1:n
product = product + A[i]*A[j]
```

Examples:

```Input : A[] = {1, 3, 4}
Output : 19
Possible Pairs : (1,3), (1,4), (3,4)
Sum of Product : 1*3 + 1*4 + 3*4 = 19
```

## Naive Solution :

For each index i we loop through j=i+1 to j=n and add A[i]*A[j] each time. Below is implementation for the same.

 `// A naive C++ program to find sum of product ` `#include ` `using` `namespace` `std; ` ` `  `// Returns sum of pair products ` `int` `findProductSum(``int` `A[], ``int` `n) ` `{ ` `    ``int` `product = 0; ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``for` `(``int` `j = i+1; j < n; j++) ` `            ``product = product + A[i]*A[j]; ` `    ``return` `product; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `A[] = {1, 3, 4}; ` `    ``int` `n = ``sizeof``(A)/``sizeof``(A); ` ` `  `    ``cout << ``"sum of product of all pairs "` `    ``"of array elements : "` `<< findProductSum(A, n); ` ` `  `    ``return` `0; ` `} `

 `/*package whatever //do not write package name here */` `// A naive Java program to find sum of product ` `import` `java.io.*; ` `class` `test ` `{ ` `    ``// Returns sum of pair products ` `    ``int` `findProductSum(``int` `A[], ``int` `n) ` `    ``{ ` `    ``int` `product = ``0``; ` `    ``for` `(``int` `i = ``0``; i < n; i++) ` `        ``for` `(``int` `j = i+``1``; j < n; j++) ` `            ``product = product + A[i]*A[j]; ` `    ``return` `product; ` `    ``}  ` `} ` `class` `GFG { ` ` `  `// Driver code ` `    ``public` `static` `void` `main (String[] args) { ` ` `  `    ``int` `A[] = {``1``, ``3``, ``4``}; ` `    ``int` `n = A.length; ` `    ``test t = ``new` `test(); ` `    ``System.out.print(``"sum of product of all pairs of array elements : "``); ` `    ``System.out.println(t.findProductSum(A, n)); ` ` `  `    ``} ` `} `

 `# A naive python3 program to find sum of product ` `  `  `# Returns sum of pair products ` `def` `findProductSum(A,n): ` ` `  `    ``product ``=` `0` `    ``for` `i ``in` `range` `(n): ` `        ``for` `j ``in` `range` `( i``+``1``,n): ` `            ``product ``=` `product ``+` `A[i]``*``A[j] ` `    ``return` `product ` `  `  `# Driver code ` `if` `__name__``=``=``"__main__"``: ` ` `  `    ``A ``=` `[``1``, ``3``, ``4``] ` `    ``n ``=` `len` `(A) ` `  `  `    ``print``(``"sum of product of all pairs "` `    ``"of array elements : "` `,findProductSum(A, n)) `

 `// A naive C# program to find sum of product ` `using` `System; ` ` `  `class` `GFG ` `{ ` `     `  `// Returns sum of pair products ` `static` `int` `findProductSum(``int``[] A, ``int` `n) ` `{ ` `    ``int` `product = 0; ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``for` `(``int` `j = i + 1; j < n; j++) ` `            ``product = product + A[i] * A[j]; ` `    ``return` `product; ` `}  ` ` `  `// Driver code ` `public` `static` `void` `Main()  ` `{ ` `    ``int``[] A = {1, 3, 4}; ` `    ``int` `n = A.Length; ` `    ``Console.WriteLine(``"sum of product of all "` `+  ` `                      ``"pairs of array elements : "``); ` `    ``Console.WriteLine(findProductSum(A, n)); ` `} ` `} ` ` `  `// This code is contributed ` `// by Akanksha Rai `

 ` `

Output:

```sum of product of all pairs of array elements : 19
```

Time Complexity : O(n2)
Space Complexity : O(1)

## Efficient O(n) solution :

```We know that
(a + b + c)2 = a2 + b2 + c2 + 2*(a*b + b*c + c*a)
Let required sum be P
Let E = (a1 + a2 + a3 + a4 ... + an)^2
=> E = a12 + a22 + ... + an2 + 2*(a1*a2 + a1*a3 + ....)
=> E = a12 + a22 + ... + an2 + 2*(P)
=> P = ( E - (a12 + a22 + .... + an2) ) / 2
```
 `// Efficient C++ program to find sum pair products ` `// in an array. ` `#include ` `using` `namespace` `std; ` ` `  `// required function ` `int` `findProductSum(``int` `A[], ``int` `n) ` `{ ` `    ``// calculating array sum (a1 + a2  ... + an) ` `    ``int` `array_sum = 0; ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``array_sum = array_sum + A[i]; ` ` `  `    ``// calcualting square of array sum ` `    ``// (a1 + a2 + ... + an)^2 ` `    ``int` `array_sum_square = array_sum * array_sum; ` ` `  `    ``// calcualting a1^2 + a2^2 + ... + an^2 ` `    ``int` `individual_square_sum = 0; ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``individual_square_sum += A[i]*A[i]; ` ` `  `    ``// required sum is (array_sum_square - ` `    ``// individual_square_sum) / 2 ` `    ``return` `(array_sum_square - individual_square_sum)/2; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `A[] = {1, 3, 4}; ` `    ``int` `n = ``sizeof``(A)/``sizeof``(A); ` `    ``cout << ``"sum of product of all pairs of array "` `            ``"elements : "` `<< findProductSum(A, n); ` `    ``return` `0; ` `} `

 `// Efficient Java program to find sum pair products ` `// in an array. ` `class` `GFG  ` `{ ` ` `  `// required function ` `static` `int` `findProductSum(``int` `A[], ``int` `n) ` `{ ` `    ``// calculating array sum (a1 + a2 ... + an) ` `    ``int` `array_sum = ``0``; ` `    ``for` `(``int` `i = ``0``; i < n; i++) ` `        ``array_sum = array_sum + A[i]; ` ` `  `    ``// calcualting square of array sum ` `    ``// (a1 + a2 + ... + an)^2 ` `    ``int` `array_sum_square = array_sum * array_sum; ` ` `  `    ``// calcualting a1^2 + a2^2 + ... + an^2 ` `    ``int` `individual_square_sum = ``0``; ` `    ``for` `(``int` `i = ``0``; i < n; i++) ` `        ``individual_square_sum += A[i] * A[i]; ` ` `  `    ``// required sum is (array_sum_square - ` `    ``// individual_square_sum) / 2 ` `    ``return` `(array_sum_square - individual_square_sum) / ``2``; ` `} ` ` `  `// Driver code ` `public` `static` `void` `main(String[] args)  ` `{ ` `    ``int` `A[] = {``1``, ``3``, ``4``}; ` `    ``int` `n = A.length; ` `    ``System.out.println(``"sum of product of all pairs of array "` `            ``+``"elements : "` `+ findProductSum(A, n)); ` `    ``} ` `}  ` ` `  `// This code is contributed by 29AjayKumar `

 `# Efficient python 3 program to find sum  ` `# pair products in an array. ` ` `  `# required function ` `def` `findProductSum(A, n): ` `     `  `    ``# calculating array sum (a1 + a2 ... + an) ` `    ``array_sum ``=` `0` `    ``for` `i ``in` `range``(``0``, n, ``1``): ` `        ``array_sum ``=` `array_sum ``+` `A[i] ` ` `  `    ``# calcualting square of array sum ` `    ``# (a1 + a2 + ... + an)^2 ` `    ``array_sum_square ``=` `array_sum ``*` `array_sum ` ` `  `    ``# calcualting a1^2 + a2^2 + ... + an^2 ` `    ``individual_square_sum ``=` `0` `    ``for` `i ``in` `range``(``0``, n, ``1``): ` `        ``individual_square_sum ``+``=` `A[i] ``*` `A[i] ` ` `  `    ``# required sum is (array_sum_square - ` `    ``# individual_square_sum) / 2 ` `    ``return` `(array_sum_square ``-`  `            ``individual_square_sum) ``/` `2` ` `  `# Driver code ` `if` `__name__ ``=``=` `'__main__'``: ` `    ``A ``=` `[``1``, ``3``, ``4``] ` `    ``n ``=` `len``(A) ` `    ``print``(``"sum of product of all pairs of"``, ` `          ``"array elements :"``, ``int``(findProductSum(A, n))) ` `     `  `# This code is contributed by ` `# Sahil_Shelangia `

 `// Efficient C# program to find sum pair  ` `// products in an array. ` `using` `System; ` ` `  `class` `GFG  ` `{ ` ` `  `// required function ` `static` `int` `findProductSum(``int``[] A, ``int` `n) ` `{ ` `    ``// calculating array sum (a1 + a2 ... + an) ` `    ``int` `array_sum = 0; ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``array_sum = array_sum + A[i]; ` ` `  `    ``// calcualting square of array sum ` `    ``// (a1 + a2 + ... + an)^2 ` `    ``int` `array_sum_square = array_sum * array_sum; ` ` `  `    ``// calcualting a1^2 + a2^2 + ... + an^2 ` `    ``int` `individual_square_sum = 0; ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``individual_square_sum += A[i] * A[i]; ` ` `  `    ``// required sum is (array_sum_square - ` `    ``// individual_square_sum) / 2 ` `    ``return` `(array_sum_square - ` `            ``individual_square_sum) / 2; ` `} ` ` `  `// Driver code ` `public` `static` `void` `Main()  ` `{ ` `    ``int``[] A = {1, 3, 4}; ` `    ``int` `n = A.Length; ` `    ``Console.WriteLine(``"sum of product of all "` `+  ` `                      ``"pairs of array elements : "` `+ ` `                       ``findProductSum(A, n)); ` `} ` `}  ` ` `  `// This code is contributed by Akanksha Rai `

 ` `

Output:
```sum of product of all pairs of array elements : 19
```

Time Complexity : O(n)
Space Complexity : O(1)

This article is contributed by Pratik Chhajer. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.