Construya una array de tamaño N en la que la suma de los elementos impares sea igual a la suma de los elementos pares

Dado un número entero N que siempre es par, la tarea es crear una array de tamaño N que contenga N/2 números pares y N/2 números impares . Todos los elementos de la array deben ser distintos y la suma de los números pares es igual a la suma de los números impares. Si no existe tal array, imprima -1.
Ejemplos: 
 

Entrada: N = 8 
Salida: 2 4 6 8 1 3 5 11 
Explicación: 
La array tiene 8 elementos distintos que tienen la misma suma de números pares e impares, es decir, (2 + 4 + 6 + 8 = 1 + 3 + 5 + 11).
Entrada: N = 10 
Salida: -1 
Explicación: 
No es posible construir una array de tamaño 10. 
 

Enfoque: para resolver el problema mencionado anteriormente, la primera observación es que no es posible crear una array que tenga un tamaño N que sea múltiplo de 2 pero no múltiplo de 4 . Porque, si eso sucede, la suma de una mitad que contiene números impares siempre será impar y la suma de otra mitad que contiene números pares siempre será par, por lo que la suma de ambas mitades no puede ser la misma.
Por lo tanto, el arreglo que satisface el enunciado del problema siempre debe tener un tamaño N que sea un múltiplo de 4. El enfoque es construir primero N/2 números pares a partir de 2, que es la primera mitad de la array. Luego cree otra parte de la array a partir de 1 y finalmente calcule el último elemento impar de modo que haga que ambas mitades sean iguales. Para hacerlo, el último elemento de los números impares debe ser (N/2) – 1 + N.
A continuación se muestra la implementación del enfoque anterior: 
 

CPP

// C++ program to Create an array
// of size N consisting of distinct
// elements where sum of odd elements
// is equal to sum of even elements
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to construct the required array
void arrayConstruct(int N)
{
 
    // To construct first half,
    // distinct even numbers
    for (int i = 2; i <= N; i = i + 2)
        cout << i << " ";
 
    // To construct second half,
    // distinct odd numbers
    for (int i = 1; i < N - 1; i = i + 2)
        cout << i << " ";
 
    // Calculate the last number of second half
    // so as to make both the halves equal
    cout << N - 1 + (N / 2) << endl;
}
 
// Function to construct the required array
void createArray(int N)
{
 
    // check if size is multiple of 4
    // then array exist
    if (N % 4 == 0)
 
        // function call to construct array
        arrayConstruct(N);
 
    else
        cout << -1 << endl;
}
 
// Driver code
int main()
{
 
    int N = 8;
 
    createArray(N);
 
    return 0;
}

Java

// Java program to Create an array
// of size N consisting of distinct
// elements where sum of odd elements
// is equal to sum of even elements
class GFG{
  
// Function to construct the required array
static void arrayConstruct(int N)
{
  
    // To confirst half,
    // distinct even numbers
    for (int i = 2; i <= N; i = i + 2)
        System.out.print(i+ " ");
  
    // To consecond half,
    // distinct odd numbers
    for (int i = 1; i < N - 1; i = i + 2)
        System.out.print(i+ " ");
  
    // Calculate the last number of second half
    // so as to make both the halves equal
    System.out.print(N - 1 + (N / 2) +"\n");
}
  
// Function to construct the required array
static void createArray(int N)
{
  
    // check if size is multiple of 4
    // then array exist
    if (N % 4 == 0)
  
        // function call to conarray
        arrayConstruct(N);
  
    else
        System.out.print(-1 +"\n");
}
  
// Driver code
public static void main(String[] args)
{
    int N = 8;
  
    createArray(N);
}
}
 
// This code is contributed by Princi Singh

Python3

# python3 program to Create an array
# of size N consisting of distinct
# elements where sum of odd elements
# is equal to sum of even elements
 
# Function to construct the required array
def arrayConstruct(N):
 
    # To construct first half,
    # distinct even numbers
    for i in range(2, N + 1, 2):
        print(i,end=" ")
 
    # To construct second half,
    # distinct odd numbers
    for i in range(1, N - 1, 2):
        print(i, end=" ")
 
    # Calculate the last number of second half
    # so as to make both the halves equal
    print(N - 1 + (N // 2))
 
# Function to construct the required array
def createArray(N):
 
    # check if size is multiple of 4
    # then array exist
    if (N % 4 == 0):
 
        # function call to construct array
        arrayConstruct(N)
 
    else:
        cout << -1 << endl
 
# Driver code
if __name__ == '__main__':
 
    N = 8
 
    createArray(N)
 
# This code is contributed by mohit kumar 29

C#

// C# program to Create an array
// of size N consisting of distinct
// elements where sum of odd elements
// is equal to sum of even elements
using System;
 
class GFG{
   
// Function to construct the required array
static void arrayConstruct(int N)
{
   
    // To confirst half,
    // distinct even numbers
    for (int i = 2; i <= N; i = i + 2)
        Console.Write(i + " ");
   
    // To consecond half,
    // distinct odd numbers
    for (int i = 1; i < N - 1; i = i + 2)
        Console.Write(i + " ");
   
    // Calculate the last number of second half
    // so as to make both the halves equal
    Console.Write(N - 1 + (N / 2) +"\n");
}
   
// Function to construct the required array
static void createArray(int N)
{
   
    // check if size is multiple of 4
    // then array exist
    if (N % 4 == 0)
   
        // function call to conarray
        arrayConstruct(N);
   
    else
        Console.Write(-1 +"\n");
}
   
// Driver code
public static void Main(String[] args)
{
    int N = 8;
   
    createArray(N);
}
}
 
// This code is contributed by Rajput-Ji

Javascript

<script>
// JavaScript program to Create an array
// of size N consisting of distinct
// elements where sum of odd elements
// is equal to sum of even elements
 
// Function to construct the required array
function arrayConstruct(N)
{
 
    // To construct first half,
    // distinct even numbers
    for (let i = 2; i <= N; i = i + 2)
        document.write(i + " ");
 
    // To construct second half,
    // distinct odd numbers
    for (let i = 1; i < N - 1; i = i + 2)
        document.write(i + " ");
 
    // Calculate the last number of second half
    // so as to make both the halves equal
    document.write(N - 1 + (N / 2) + "<br>");
}
 
// Function to construct the required array
function createArray(N)
{
 
    // check if size is multiple of 4
    // then array exist
    if (N % 4 == 0)
 
        // function call to construct array
        arrayConstruct(N);
    else
        document.write(-1 + "<br>");
}
 
// Driver code
    let N = 8;
    createArray(N);
 
// This code is contributed by Surbhi Tyagi.
</script>
Producción: 

2 4 6 8 1 3 5 11

 

Complejidad de tiempo: O(N)

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

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