Cuente el número de pares ordenados con sumas pares e impares

Dada una array de n números positivos, la tarea es contar el número de pares ordenados con sumas pares e impares.
Ejemplos:
 

Entrada: arr[] = {1, 2, 4} 
Salida: pares de sumas pares = 2, pares de sumas impares = 4 
Los pares ordenados son (1, 2), (1, 4), (2, 1), (4 , 1), (2, 4), (4, 2) 
Pares con suma Par: (2, 4), (4, 2) 
Pares con suma Impar: (1, 2), (1, 4), (2 , 1), (4, 1)
Entrada: arr[] = {2, 4, 5, 9, 1, 8} 
Salida: pares de sumas pares = 12, pares de sumas impares = 18 
 

Planteamiento: 
La suma de dos números es impar si un número es impar y otro es par. Así que ahora tenemos que contar los números pares e impares. Como en el orden par (a, b) y (b, a) ambos tratados como pares diferentes, por lo tanto 
 

Número de pares de sumas impares = (recuento de números pares) * (recuento de números impares) * 2

Esto se debe a que todos los números pares pueden emparejarse con todos los números impares y todos los números impares pueden emparejarse con todos los números pares. Así se multiplica 2 en la respuesta.
Y el número de pares de sumas pares será una inversión del número de pares de sumas impares. Por lo tanto:
 

Número de pares de sumas pares = Número total de pares – Número de pares de sumas impares

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

CPP

// C++ implementation of the above approach
#include <bits/stdc++.h>
using namespace std;
 
// function to count odd sum pair
int count_odd_pair(int n, int a[])
{
    int odd = 0, even = 0;
 
    for (int i = 0; i < n; i++) {
 
        // if number is even
        if (a[i] % 2 == 0)
            even++;
 
        // if number is odd
        else
            odd++;
    }
 
    // count of ordered pairs
    int ans = odd * even * 2;
 
    return ans;
}
 
// function to count even sum pair
int count_even_pair(int odd_sum_pairs, int n)
{
    int total_pairs = (n * (n - 1));
    int ans = total_pairs - odd_sum_pairs;
     
    return ans;
}
 
// Driver code
int main()
{
 
    int n = 6;
    int a[] = { 2, 4, 5, 9, 1, 8 };
 
    int odd_sum_pairs = count_odd_pair(n, a);
 
    int even_sum_pairs = count_even_pair(
        odd_sum_pairs, n);
 
    cout << "Even Sum Pairs = "
         << even_sum_pairs
         << endl;
    cout << "Odd Sum Pairs= "
         << odd_sum_pairs
         << endl;
 
    return 0;
}

Java

// Java implementation of the above approach
 
class GFG
{
    // function to count odd sum pair
    static int count_odd_pair(int n, int a[])
    {
        int odd = 0, even = 0;
     
        for (int i = 0; i < n; i++) {
     
            // if number is even
            if (a[i] % 2 == 0)
                even++;
     
            // if number is odd
            else
                odd++;
        }
     
        // count of ordered pairs
        int ans = odd * even * 2;
     
        return ans;
    }
     
    // function to count even sum pair
    static int count_even_pair(int odd_sum_pairs, int n)
    {
        int total_pairs = (n * (n - 1));
        int ans = total_pairs - odd_sum_pairs;
         
        return ans;
    }
     
    // Driver code
    public static void main(String []args)
    {
     
        int n = 6;
        int []a = { 2, 4, 5, 9, 1, 8 };
     
        int odd_sum_pairs = count_odd_pair(n, a);
     
        int even_sum_pairs = count_even_pair( odd_sum_pairs, n);
     
        System.out.println("Even Sum Pairs = " + even_sum_pairs);
             
        System.out.println("Odd Sum Pairs= " + odd_sum_pairs);
     
         
    }
 
}
 
// This code is contributed by ihritik

Python3

# Python3 implementation of the above approach
 
# function to count odd sum pair
def count_odd_pair( n,  a):
 
    odd = 0
    even = 0
 
    for i in range(0,n):
 
        # if number is even
        if ( a[ i] % 2 == 0):
             even=even+1
 
        # if number is odd
        else:
             odd=odd+1
     
 
    # count of ordered pairs
    ans =  odd *  even * 2
 
    return  ans
 
 
# function to count even sum pair
def count_even_pair( odd_sum_pairs,  n):
 
    total_pairs = ( n * ( n - 1))
    ans =  total_pairs -  odd_sum_pairs
    return ans
 
 
# Driver code
 
n = 6
a = [2, 4, 5, 9, 1, 8]
 
odd_sum_pairs = count_odd_pair( n,  a)
 
even_sum_pairs = count_even_pair( odd_sum_pairs,  n)
 
print("Even Sum Pairs =", even_sum_pairs)
print("Odd Sum Pairs=", odd_sum_pairs)
     
# This code is contributed by ihritik

C#

// C# implementation of the above approach
 
using System;
class GFG
{
    // function to count odd sum pair
    static int count_odd_pair(int n, int []a)
    {
        int odd = 0, even = 0;
     
        for (int i = 0; i < n; i++) {
     
            // if number is even
            if (a[i] % 2 == 0)
                even++;
     
            // if number is odd
            else
                odd++;
        }
     
        // count of ordered pairs
        int ans = odd * even * 2;
     
        return ans;
    }
     
    // function to count even sum pair
    static int count_even_pair(int odd_sum_pairs, int n)
    {
        int total_pairs = (n * (n - 1));
        int ans = total_pairs - odd_sum_pairs;
         
        return ans;
    }
     
    // Driver code
    public static void Main()
    {
     
        int n = 6;
        int []a = { 2, 4, 5, 9, 1, 8 };
     
        int odd_sum_pairs = count_odd_pair(n, a);
     
        int even_sum_pairs = count_even_pair( odd_sum_pairs, n);
     
        Console.WriteLine("Even Sum Pairs = " + even_sum_pairs);
             
        Console.WriteLine("Odd Sum Pairs= " + odd_sum_pairs);
        
    }
 
}
 
// This code is contributed by ihritik

PHP

<?php
// PHP implementation of the above approach
 
// function to count odd sum pair
function count_odd_pair($n, $a)
{
    $odd = 0;
    $even = 0;
 
    for ($i = 0; $i < $n; $i++) {
 
        // if number is even
        if ($a[$i] % 2 == 0)
            $even++;
 
        // if number is odd
        else
            $odd++;
    }
 
    // count of ordered pairs
    $ans = $odd * $even * 2;
 
    return $ans;
}
 
// function to count even sum pair
function count_even_pair($odd_sum_pairs, $n)
{
    $total_pairs = ($n * ($n - 1));
    $ans = $total_pairs - $odd_sum_pairs;
    return $ans;
}
 
// Driver code
 
$n = 6;
$a = array( 2, 4, 5, 9, 1, 8 );
 
$odd_sum_pairs = count_odd_pair($n, $a);
 
$even_sum_pairs = count_even_pair($odd_sum_pairs, $n);
 
echo "Even Sum Pairs = $even_sum_pairs \n";
echo "Odd Sum Pairs=  $odd_sum_pairs \n";
     
// This code is contributed by ihritik   
?>

Javascript

<script>
 
// JavaScript implementation of the above approach
 
// function to count odd sum pair
function count_odd_pair(n, a)
{
    var odd = 0, even = 0;
 
    for (var i = 0; i < n; i++) {
 
        // if number is even
        if (a[i] % 2 == 0)
            even++;
 
        // if number is odd
        else
            odd++;
    }
 
    // count of ordered pairs
    var ans = odd * even * 2;
 
    return ans;
}
 
// function to count even sum pair
function count_even_pair(odd_sum_pairs, n)
{
    var total_pairs = (n * (n - 1));
    var ans = total_pairs - odd_sum_pairs;
     
    return ans;
}
 
// Driver code
var n = 6;
var a = [2, 4, 5, 9, 1, 8];
var odd_sum_pairs = count_odd_pair(n, a);
var even_sum_pairs = count_even_pair(
    odd_sum_pairs, n);
     
document.write( "Even Sum Pairs = "
     + even_sum_pairs + "<br>");
      
document.write( "Odd Sum Pairs = "
     + odd_sum_pairs + "<br>");
      
 
</script>
Producción: 

Even Sum Pairs = 12
Odd Sum Pairs= 18

 

Complejidad de tiempo: O(n), para encontrar el número de números pares e impares en la array dada
Espacio auxiliar: O(1), ya que no se usa espacio adicional

Publicación traducida automáticamente

Artículo escrito por souradeep 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 *