Рубрики

Подсчитайте разные пары из двух массивов, имеющих одинаковую сумму цифр

Даны два массива arr1 [] и arr2 []. Задача состоит в том, чтобы найти общее количество различных пар (сформированных путем выбора 1 элемента из arr1 и одного элемента из arr2), так чтобы оба элемента пары имели сумму цифр.

Примечание. Пары, встречающиеся более одного раза, должны учитываться только один раз.

Примеры :

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)

Подходить:

  • Запустите два вложенных цикла, чтобы сгенерировать все возможные пары из двух массивов, взяв один элемент из arr1 [] и один из arr2 [].
  • Если сумма цифр равна, тогда вставьте пару (a, b) в набор, чтобы избежать дублирования, где a — меньший элемент, а b — больший.
  • Всего пар будет размер финального сета.

Ниже приведена реализация вышеуказанного подхода:

C ++

// C ++ программа для подсчета общего количества
// пары, имеющие элементы с одинаковыми
// сумма цифр

  
#include <bits/stdc++.h>

using namespace std;

  
// Функция для возврата
// сумма цифр числа

int digitSum(int n)

{

    int sum = 0;

    while (n > 0) {

        sum += n % 10;

        n = n / 10;

    }

    return sum;

}

  
// Функция для возврата общего количества пар
// элементов с равной суммой цифр

int totalPairs(int arr1[], int arr2[], int n, int m)

{

  

    // набор используется, чтобы избежать дублирования пар

    set<pair<int, int> > s;

  

    for (int i = 0; i < n; i++) {

        for (int j = 0; j < m; j++) {

  

            // проверяем сумму цифр

            // обоих элементов

            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 s.size();

}

  
// Код драйвера

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-программа для подсчета общего количества
// пары, имеющие элементы с одинаковыми
// сумма цифр

import java.util.*;

  

class GFG 

{

  

static class pair

    int first, second; 

    public pair(int first, int second) 

    

        this.first = first; 

        this.second = second; 

    

}

  
// Функция для возврата
// сумма цифр числа

static int digitSum(int n)

{

    int sum = 0;

    while (n > 0)

    {

        sum += n % 10;

        n = n / 10;

    }

    return sum;

}

  
// Функция для возврата общего количества пар
// элементов с равной суммой цифр

static int totalPairs(int arr1[], int arr2[],

                      int n, int m)

{

  

    // набор используется, чтобы избежать дублирования пар

    Set<pair> s = new HashSet<>();

  

    for (int i = 0; i < n; i++) 

    {

        for (int j = 0; j < m; j++) 

        {

  

            // проверяем сумму цифр

            // обоих элементов

            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 s.size();

}

  
// Код драйвера

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));

}

  
// Этот код предоставлен Rajput-Ji

python3

# Python3 программа для подсчета общего количества
# пары, имеющие элементы с одинаковой суммой цифр

  
# Функция для возврата
# сумма цифр числа

def digitSum(n): 

   

    Sum = 0 

    while n > 0:  

        Sum += n % 10 

        n = n // 10 

       

    return Sum 

  
# Функция для возврата общего количества пар
# элементов с равной суммой цифр

def totalPairs(arr1, arr2, n, m): 

  

    # set используется для избежания дублирования пар

    s = set() 

  

    for i in range(0, n):  

        for j in range(0, m):  

  

            # проверить сумму цифр

            # обоих элементов

            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 len(s) 

  
# Код драйвера

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)) 

      
# Этот код предоставлен Rituraj Jain

C #

// C # программа для подсчета общего количества
// пары, имеющие элементы с одинаковыми
// сумма цифр

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; 

    

}

  
// Функция для возврата
// сумма цифр числа

static int digitSum(int n)

{

    int sum = 0;

    while (n > 0)

    {

        sum += n % 10;

        n = n / 10;

    }

    return sum;

}

  
// Функция для возврата общего количества пар
// элементов с равной суммой цифр

static int totalPairs(int []arr1, int []arr2,

                      int n, int m)

{

  

    // набор используется, чтобы избежать дублирования пар

    HashSet<pair> s = new HashSet<pair>();

  

    for (int i = 0; i < n; i++) 

    {

        for (int j = 0; j < m; j++) 

        {

  

            // проверяем сумму цифр

            // обоих элементов

            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 s.Count;

}

  
// Код драйвера

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));

}
}

  
// Этот код предоставлен Принчи Сингхом

Выход:

3

Рекомендуемые посты:

Подсчитайте разные пары из двух массивов, имеющих одинаковую сумму цифр

0.00 (0%) 0 votes