Given an array of N integers, find the difference between the summation of numbers whose frequency of all digits are same and different. For e.g. 8844, 1001, 56, 77, 34764673 are the examples of numbers where all digits have the same frequency. Similarly, 545, 44199, 76672, 202 are the examples of numbers whose frequency of digits are not the same.

**Examples:**

Input:a[] = {24, 787, 2442, 101, 1212}Output:2790

(2442 + 24 + 1212) – (787 + 101) = 2790

Input:a[]= {12321, 786786, 110022, 47, 22895}Output:861639

**Approach:** Traverse for every element in the array. Keep a count of all digits in a map. Once all digits are traversed in the element, check if the map contains the same frequency for all digits. If it contains the same frequency, then add it to same else add it to diff. After the array has been traversed completely, return the difference of both the elements.

Below is the implementation of the above approach:

## CPP

`// C++ Difference between the` `// summation of numbers` `// in which the frequency of` `// all digits are same and different` `#include <bits/stdc++.h>` `using` `namespace` `std;` ` ` `// Function that returns the difference` `int` `difference(` `int` `a[], ` `int` `n)` `{` ` ` ` ` `// Stores the sum of same` ` ` `// and different frequency digits` ` ` `int` `same = 0;` ` ` `int` `diff = 0;` ` ` ` ` `// traverse in the array` ` ` `for` `(` `int` `i = 0; i < n; i++) {` ` ` `// duplicate of array element` ` ` `int` `num = a[i];` ` ` `unordered_map<` `int` `, ` `int` `> mp;` ` ` ` ` `// traverse for every digit` ` ` `while` `(num) {` ` ` `mp[num % 10]++;` ` ` `num = num / 10;` ` ` `}` ` ` ` ` `// iterator pointing to the` ` ` `// first element in the array` ` ` `auto` `it = mp.begin();` ` ` ` ` `// count of the smallest digit` ` ` `int` `freqdigit = (*it).second;` ` ` `int` `flag = 0;` ` ` ` ` `// check if all digits have same frequency or not` ` ` `for` `(` `auto` `it = mp.begin(); it != mp.end(); it++) {` ` ` `if` `((*it).second != freqdigit) {` ` ` `flag = 1;` ` ` `break` `;` ` ` `}` ` ` `}` ` ` ` ` `// add to diff if not same` ` ` `if` `(flag)` ` ` `diff += a[i];` ` ` `else` ` ` `same += a[i];` ` ` `}` ` ` ` ` `return` `same - diff;` `}` ` ` `// Driver Code` `int` `main()` `{` ` ` `int` `a[] = { 24, 787, 2442, 101, 1212 };` ` ` `int` `n = ` `sizeof` `(a) / ` `sizeof` `(a[0]);` ` ` `cout << difference(a, n);` ` ` `return` `0;` `}` |

## Java

`// Java Difference between the` `// summation of numbers` `// in which the frequency of` `// all digits are same and different` `import` `java.util.*;` ` ` `class` `GFG` `{` ` ` `// Function that returns the difference` `static` `int` `difference(` `int` `a[], ` `int` `n)` `{` ` ` ` ` `// Stores the sum of same` ` ` `// and different frequency digits` ` ` `int` `same = ` `0` `;` ` ` `int` `diff = ` `0` `;` ` ` ` ` `// traverse in the array` ` ` `for` `(` `int` `i = ` `0` `; i < n; i++)` ` ` `{` ` ` ` ` `// duplicate of array element` ` ` `int` `num = a[i];` ` ` `HashMap<Integer,Integer> mp = ` `new` `HashMap<Integer,Integer>();` ` ` ` ` `// traverse for every digit` ` ` `while` `(num > ` `0` `) ` ` ` `{` ` ` `if` `(mp.containsKey(num % ` `10` `))` ` ` `mp.put(num % ` `10` `, (mp.get(num % ` `10` `) + ` `1` `));` ` ` `else` ` ` `mp.put(num % ` `10` `, ` `1` `);` ` ` `num = num / ` `10` `;` ` ` `}` ` ` ` ` `// iterator pointing to the` ` ` `// first element in the array` ` ` `Iterator<Map.Entry<Integer, Integer>> it = mp.entrySet().iterator(); ` ` ` ` ` `// count of the smallest digit` ` ` `int` `freqdigit = it.next().getValue();` ` ` `int` `flag = ` `0` `;` ` ` ` ` `// check if all digits have same frequency or not` ` ` `for` `(Map.Entry<Integer,Integer> its : mp.entrySet()) ` ` ` `{` ` ` `if` `(its.getValue() != freqdigit) ` ` ` `{` ` ` `flag = ` `1` `;` ` ` `break` `;` ` ` `}` ` ` `}` ` ` ` ` `// add to diff if not same` ` ` `if` `(flag == ` `1` `)` ` ` `diff += a[i];` ` ` `else` ` ` `same += a[i];` ` ` `}` ` ` ` ` `return` `same - diff;` `}` ` ` `// Driver Code` `public` `static` `void` `main(String[] args)` `{` ` ` `int` `a[] = { ` `24` `, ` `787` `, ` `2442` `, ` `101` `, ` `1212` `};` ` ` `int` `n = a.length;` ` ` `System.out.print(difference(a, n));` `}` `}` ` ` `// This code is contributed by PrinciRaj1992` |

## Python3

`# Python3 Difference between the` `# summation of numbers` `# in which the frequency of` `# all digits are same and different` ` ` `# Function that returns the difference` `def` `difference(a, n):` ` ` ` ` `# Stores the sum of same` ` ` `# and different frequency digits` ` ` `same ` `=` `0` ` ` `diff ` `=` `0` ` ` ` ` `# traverse in the array` ` ` `for` `i ` `in` `range` `(n):` ` ` ` ` `# duplicate of array element` ` ` `num ` `=` `a[i]` ` ` `mp` `=` `{}` ` ` ` ` `# traverse for every digit` ` ` `while` `(num):` ` ` `if` `num ` `%` `10` `not` `in` `mp:` ` ` `mp[num ` `%` `10` `] ` `=` `0` ` ` `mp[num ` `%` `10` `] ` `+` `=` `1` ` ` `num ` `=` `num ` `/` `/` `10` ` ` ` ` `# iterator pointing to the` ` ` `# first element in the array` ` ` `it ` `=` `list` `(mp.keys())` ` ` ` ` `# count of the smallest digit` ` ` `freqdigit ` `=` `mp[it[` `0` `]]` ` ` `flag ` `=` `0` ` ` ` ` `# check if all digits have same frequency or not` ` ` `for` `it ` `in` `mp:` ` ` `if` `mp[it] !` `=` `freqdigit:` ` ` `flag ` `=` `1` ` ` `break` ` ` ` ` `# add to diff if not same` ` ` `if` `(flag):` ` ` `diff ` `+` `=` `a[i]` ` ` `else` `:` ` ` `same ` `+` `=` `a[i]` ` ` ` ` `return` `same ` `-` `diff` ` ` `# Driver Code` `a ` `=` `[` `24` `, ` `787` `, ` `2442` `, ` `101` `, ` `1212` `] ` `n ` `=` `len` `(a)` `print` `(difference(a, n))` ` ` `# This code is contributted by SHUBHAMSINGH10` |

**Output:**

2790

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready. Get hold of all the important mathematical concepts for competitive programming with the **Essential Maths for CP Course** at a student-friendly price.

In case you wish to attend live classes with industry experts, please refer **Geeks Classes Live**