Cuente pares distintos de dos arrays que tienen la misma suma de dígitos

Dadas dos arrays arr1[] y arr2[]. La tarea es encontrar el número total de pares distintos (formados al elegir 1 elemento de arr1 y un elemento de arr2), de modo que ambos elementos del par tengan la suma de dígitos.
Nota: Los pares que ocurren más de una vez deben contarse solo una vez.
Ejemplos
 

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)

Acercarse: 
 

  • Ejecute dos bucles anidados para generar todos los pares posibles de las dos arrays tomando un elemento de arr1[] y otro de arr2[].
  • Si la suma de los dígitos es igual, inserte el par (a, b) en un conjunto, para evitar duplicados donde a es el elemento más pequeño y b es el más grande.
  • Los pares totales serán del tamaño del conjunto final.

A continuación se muestra la implementación del enfoque anterior:
 

C++

// 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;
}

Java

// Java program to count total number of
// pairs having elements with same
// sum of digits
import java.util.*;
 
class GFG
{
 
static class pair
{
    int first, second;
    public pair(int first, int second)
    {
        this.first = first;
        this.second = second;
    }
}
 
// Function for returning
// sum of digits of a number
static 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
static int totalPairs(int arr1[], int arr2[],
                      int n, int m)
{
 
    // set is used to avoid duplicate pairs
    Set<pair> s = new HashSet<>();
 
    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.add(new pair(arr1[i], arr2[j]));
                else
                    s.add(new pair(arr2[j], arr1[i]));
            }
        }
    }
 
    // return size of the set
    return s.size();
}
 
// Driver code
public static void main(String[] args)
{
    int arr1[] = { 100, 3, 7, 50 };
    int arr2[] = { 5, 1, 10, 4 };
    int n = arr1.length;
    int m = arr2.length;
 
    System.out.println(totalPairs(arr1, arr2, n, m));
}
}
 
// This code is contributed by Rajput-Ji

Python3

# Python3 program to count total number of
# pairs having elements with same sum of digits
 
# Function for returning
# sum of digits of a number
def digitSum(n):
  
    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
def totalPairs(arr1, arr2, n, m):
 
    # set is used to avoid duplicate pairs
    s = set()
 
    for i in range(0, n): 
        for j in range(0, m): 
 
            # check sum of digits
            # of both the elements
            if digitSum(arr1[i]) == digitSum(arr2[j]): 
 
                if arr1[i] < arr2[j]:
                    s.add((arr1[i], arr2[j]))
                else:
                    s.add((arr2[j], arr1[i]))
              
    # return size of the set
    return len(s)
 
# Driver code
if __name__ == "__main__":
  
    arr1 = [100, 3, 7, 50] 
    arr2 = [5, 1, 10, 4]
    n = len(arr1)
    m = len(arr2)
 
    print(totalPairs(arr1, arr2, n, m))
     
# This code is contributed by Rituraj Jain

C#

// C# program to count total number of
// pairs having elements with same
// sum of digits
using System;
using System.Collections.Generic;
 
class GFG
{
 
public class pair
{
    public int first, second;
    public pair(int first, int second)
    {
        this.first = first;
        this.second = second;
    }
}
 
// Function for returning
// sum of digits of a number
static 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
static int totalPairs(int []arr1, int []arr2,
                      int n, int m)
{
 
    // set is used to avoid duplicate pairs
    HashSet<pair> s = new HashSet<pair>();
 
    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.Add(new pair(arr1[i], arr2[j]));
                else
                    s.Add(new pair(arr2[j], arr1[i]));
            }
        }
    }
 
    // return size of the set
    return s.Count;
}
 
// Driver code
public static void Main(String[] args)
{
    int []arr1 = { 100, 3, 7, 50 };
    int []arr2 = { 5, 1, 10, 4 };
    int n = arr1.Length;
    int m = arr2.Length;
 
    Console.WriteLine(totalPairs(arr1, arr2, n, m));
}
}
 
// This code is contributed by Princi Singh

Javascript

<script>
 
// Javascript program to count total number of
// pairs having elements with same
// sum of digits
 
// Function for returning
// sum of digits of a number
function digitSum(n)
{
    var sum = 0;
    while (n > 0) {
        sum += n % 10;
        n = parseInt(n / 10);
    }
    return sum;
}
 
// Function to return the total pairs
// of elements with equal sum of digits
function totalPairs(arr1, arr2, n, m)
{
 
    // set is used to avoid duplicate pairs
    var s = new Set();
 
    for (var i = 0; i < n; i++) {
        for (var 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.add([arr1[i], arr2[j]]);
                else
                    s.add([arr2[j], arr1[i]]);
            }
        }
    }
 
    // return size of the set
    return s.size;
}
 
// Driver code
var arr1 = [100, 3, 7, 50 ];
var arr2 = [5, 1, 10, 4 ];
var n = arr1.length;
var m = arr2.length;
document.write( totalPairs(arr1, arr2, n, m));
 
</script>
Producción: 

3

 

Publicación traducida automáticamente

Artículo escrito por Shashank_Sharma y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *