# Count distinct pairs from two arrays having same sum of digits

Given two arrays arr1[] and arr2[]. The task is to find the total number of distinct pairs(formed by picking 1 element from arr1 and one element from arr2), such that both the elements of the pair have the sum of digits.

Note: Pairs occurring more than once must be counted only once.

Examples:

```Input : arr1[] = {33, 41, 59, 1, 3}
arr2[] = {3, 32, 51, 3}
Output : 3
Possible pairs are:
(33, 51), (41, 32), (3, 3)

Input : arr1[] = {1, 6, 4, 22}
arr2[] = {1, 3, 24}
Output : 2
Possible pairs are:
(1, 1), (6, 24)
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:

• Run two nested loops to generate all possible pairs from the two arrays taking one element from arr1[] and one from arr2[].
• If sum of digits is equal, then insert the pair(a, b) into a set, in order to avoid duplicates where a is the smaller element and b is the larger one.
• Total pairs will be the size of the final set.

Below is the implementation of the above approach:

 `// C++ program to count total number of ` `// pairs having elements with same ` `// sum of digits ` ` `  `#include ` `using` `namespace` `std; ` ` `  `// Function for returning ` `// sum of digits of a number ` `int` `digitSum(``int` `n) ` `{ ` `    ``int` `sum = 0; ` `    ``while` `(n > 0) { ` `        ``sum += n % 10; ` `        ``n = n / 10; ` `    ``} ` `    ``return` `sum; ` `} ` ` `  `// Function to return the total pairs ` `// of elements with equal sum of digits ` `int` `totalPairs(``int` `arr1[], ``int` `arr2[], ``int` `n, ``int` `m) ` `{ ` ` `  `    ``// set is used to avoid duplicate pairs ` `    ``set > s; ` ` `  `    ``for` `(``int` `i = 0; i < n; i++) { ` `        ``for` `(``int` `j = 0; j < m; j++) { ` ` `  `            ``// check sum of digits ` `            ``// of both the elements ` `            ``if` `(digitSum(arr1[i]) == digitSum(arr2[j])) { ` ` `  `                ``if` `(arr1[i] < arr2[j]) ` `                    ``s.insert(make_pair(arr1[i], arr2[j])); ` `                ``else` `                    ``s.insert(make_pair(arr2[j], arr1[i])); ` `            ``} ` `        ``} ` `    ``} ` ` `  `    ``// return size of the set ` `    ``return` `s.size(); ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `arr1[] = { 100, 3, 7, 50 }; ` `    ``int` `arr2[] = { 5, 1, 10, 4 }; ` `    ``int` `n = ``sizeof``(arr1) / ``sizeof``(arr1[0]); ` `    ``int` `m = ``sizeof``(arr2) / ``sizeof``(arr2[0]); ` ` `  `    ``cout << totalPairs(arr1, arr2, n, m); ` `    ``return` `0; ` `} `

Output:

```3
```

My Personal Notes arrow_drop_up

Article Tags :
Practice Tags :

1

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.