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)

**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 <bits/stdc++.h> ` `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<pair<` `int` `, ` `int` `> > 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; ` `} ` |

*chevron_right*

*filter_none*

**Output:**

3

## Recommended Posts:

- Count pairs formed by distinct element sub-arrays
- Count all distinct pairs with difference equal to k
- Count number of distinct pairs whose sum exists in the given array
- Count pairs from two sorted arrays whose sum is equal to a given value x
- Count pairs from two arrays whose modulo operation yields K
- Numbers having Unique (or Distinct) digits
- Check if the sum of distinct digits of two integers are equal
- Pairs whose concatenation contain all digits
- Count distinct Bitwise OR of all Subarrays
- Count subsets having distinct even numbers
- Count distinct elements in an array
- Count distinct elements in every window of size k
- Absolute distinct count in a sorted array
- Count of subsequences having maximum distinct elements
- Count of distinct substrings of a string using Suffix Array

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.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.