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