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