Related Articles

# Sum of product of all pairs of a Binary Array

• Difficulty Level : Easy
• Last Updated : 01 Jun, 2021

Given a binary array arr[] of size N, the task is to print the sum of product of all pairs of the given array elements.

Note: The binary array contains only 0 and 1.

Examples:

Input: arr[] = {0, 1, 1, 0, 1}
Output: 3
Explanation: Sum of product of all possible pairs are: {0 × 1 + 0 × 1 + 0 × 0 + 0 × 1 + 1 × 1 + 1 × 0 + 1 × 1 + 1 × 0 + 1 × 1 + 0 × 1}.
Therefore, the required output is 3.

Input: arr[] = {1, 1, 1, 1}
Output: 6

Naive Approach: The simplest approach to solve the problem is to use generate all possible pairs from the array and calculate the sum of their product.

Time Complexity: O(N2)
Auxiliary Space: O(1)

Efficient Approach: To optimize the above approach, consider only those pairs in which both the elements are 1. Following are the observations:

If there is a pair (arr[i], arr[j]) where arr[i] × arr[j] = 1, then arr[i] and arr[j] must be 1.

Total number of pairs that satisfy (arr[i] × arr[j] = 1) are:
=> => cntOne × (cntOne – 1) / 2
where, cntOne is the count of 1s in the given array

Follow the steps below to solve the problem:

• Initialize the variable cntOne to store the count of 1s from the given array.
• Finally, return the value of cntOne * (cntOne – 1) / 2.

Below is the implementation of the above approach:

## C++

 `// C++ program to implement``// the above approach``#include ``using` `namespace` `std;` `// Function to print the sum of product``// of all pairs of the given array``int` `productSum(``int` `arr[], ``int` `N)``{``    ` `    ``// Stores count of one in``    ``// the given array``    ``int` `cntOne = 0;`` ` `    ``for``(``int` `i = 0; i < N; i++)``    ``{``        ` `        ``// If current element is 1``        ``if` `(arr[i] == 1)`` ` `            ``// Increase count``            ``cntOne++;``    ``}`` ` `    ``// Return the sum of product``    ``// of all pairs``    ``return` `cntOne * (cntOne - 1) / 2;``}`` ` `// Driver Code``int` `main()``{``    ``int` `arr[] = { 0, 1, 1, 0, 1 };``    ` `    ``// Stores the size of``    ``// the given array``    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr);``    ` `    ``cout << productSum(arr, n) << endl;``}` `// This code is contributed by code_hunt`

## Java

 `// Java program to implement``// the above approach``import` `java.util.*;` `class` `GFG {` `    ``// Function to print the sum of product``    ``// of all pairs of the given array``    ``static` `int` `productSum(``int``[] arr)``    ``{` `        ``// Stores count of one in``        ``// the given array``        ``int` `cntOne = ``0``;` `        ``// Stores the size of``        ``// the given array``        ``int` `N = arr.length;` `        ``for` `(``int` `i = ``0``; i < N; i++) {` `            ``// If current element is 1``            ``if` `(arr[i] == ``1``)` `                ``// Increase count``                ``cntOne++;``        ``}` `        ``// Return the sum of product``        ``// of all pairs``        ``return` `cntOne * (cntOne - ``1``) / ``2``;``    ``}` `    ``// Driver Code``    ``public` `static` `void` `main(String[] args)``    ``{` `        ``int``[] arr = { ``0``, ``1``, ``1``, ``0``, ``1` `};` `        ``System.out.println(productSum(arr));``    ``}``}`

## Python3

 `# Python3 program to implement``# the above approach` `# Function to print the sum of product``# of all pairs of the given array``def` `productSum(arr):`` ` `    ``# Stores count of one in``    ``# the given array``    ``cntOne ``=` `0``    ` `    ``# Stores the size of``    ``# the given array``    ``N ``=` `len``(arr)`` ` `    ``for` `i ``in` `range``(N):`` ` `        ``# If current element is 1``        ``if` `(arr[i] ``=``=` `1``):`` ` `            ``# Increase count``            ``cntOne ``+``=` `1``    ` `    ``# Return the sum of product``    ``# of all pairs``    ``return` `cntOne ``*` `(cntOne ``-` `1``) ``/``/` `2` `# Driver Code``arr ``=` `[ ``0``, ``1``, ``1``, ``0``, ``1` `]` `print``(productSum(arr))` `# This code is contributed by code_hunt`

## C#

 `// C# program to implement``// the above approach``using` `System;` `class` `GFG{`` ` `// Function to print the sum of product``// of all pairs of the given array``static` `int` `productSum(``int``[] arr)``{``    ` `    ``// Stores count of one in``    ``// the given array``    ``int` `cntOne = 0;` `    ``// Stores the size of``    ``// the given array``    ``int` `N = arr.Length;` `    ``for``(``int` `i = 0; i < N; i++)``    ``{``        ` `        ``// If current element is 1``        ``if` `(arr[i] == 1)` `            ``// Increase count``            ``cntOne++;``    ``}` `    ``// Return the sum of product``    ``// of all pairs``    ``return` `cntOne * (cntOne - 1) / 2;``}` `// Driver Code``public` `static` `void` `Main()``{``    ``int``[] arr = { 0, 1, 1, 0, 1 };` `    ``Console.Write(productSum(arr));``}``}` `// This code is contributed by code_hunt`

## Javascript

 ``
Output:
`3`

Time Complexity: O(N)
Auxiliary Space: O(1)

Attention reader! Don’t stop learning now. Join the First-Step-to-DSA Course for Class 9 to 12 students , specifically designed to introduce data structures and algorithms to the class 9 to 12 students

My Personal Notes arrow_drop_up