Dados dos enteros N y K , la tarea es encontrar una array de tamaño K que contenga solo elementos pares o impares donde la suma de todos los elementos de la array sea N. Si no existe tal array, escriba «No».
Ejemplos:
Entrada: N = 18, K = 3
Salida: 6 6 6
Entrada: N = 19, K = 5
Salida: 3 3 3 3 7
Enfoque: La idea es elegir el número par o impar más pequeño K-1 veces y finalmente, calcular el último número con la ayuda de la suma total. Si el último número también es par para el número par e impar para el número impar más pequeño. Entonces es posible elegir tal array. De lo contrario, no existe tal array posible.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation to find an // array of size K with all the // even or odd elements in the array #include <bits/stdc++.h> using namespace std; // Function to find the array with // all the even / odd elements void getArrayOfSizeK(int n, int k) { vector<int> ans; // If array could be constructed // by adding odd elements // we need to find the kth // element is odd or even // if array of odd elements // would be the answer then // k-1 elements would be 1 // First let's check // kth is odd or even int odd = n - ((k - 1) * 1); // if last element is also // an odd number then // we can choose odd // elements for our answer if (odd > 0 && odd % 2 != 0) { // Add 1 in the array (k-1) times for (int i = 0; i < k - 1; i++) { ans.push_back(1); } // Add last odd element ans.push_back(odd); } // If array of even elements // would be the answer then // k-1 elements would be 2 int even = n - ((k - 1) * 2); // if last element is also // an even number then // we can choose even // elements for our answer if (even > 0 && even % 2 == 0 && ans.size() == 0) { // Add 2 in the array (k-1) times for (int i = 0; i < k - 1; i++) { ans.push_back(2); } // Add last even element ans.push_back(even); } // Printing the array if (ans.size() > 0) { for (int i = 0; i < k; i++) { cout << ans[i] << " "; } } else { cout << "NO" << endl; } } // Driver Code int main() { int n = 10, k = 3; getArrayOfSizeK(n, k); return 0; }
Java
// Java implementation to find an // array of size K with all the // even or odd elements in the array import java.util.*; class GFG { // Function to find the array with // all the even / odd elements static void getArrayOfSizeK(int n, int k) { Vector<Integer> ans = new Vector<Integer>(); // If array could be constructed // by adding odd elements // we need to find the kth // element is odd or even // If array of odd elements // would be the answer then // k-1 elements would be 1 // First let's check // kth is odd or even int odd = n - ((k - 1) * 1); // If last element is also // an odd number then // we can choose odd // elements for our answer if (odd > 0 && odd % 2 != 0) { // Add 1 in the array (k-1) times for (int i = 0; i < k - 1; i++) { ans.add(1); } // Add last odd element ans.add(odd); } // If array of even elements // would be the answer then // k-1 elements would be 2 int even = n - ((k - 1) * 2); // If last element is also // an even number then // we can choose even // elements for our answer if (even > 0 && even % 2 == 0 && ans.size() == 0) { // Add 2 in the array (k-1) times for (int i = 0; i < k - 1; i++) { ans.add(2); } // Add last even element ans.add(even); } // Printing the array if (ans.size() > 0) { for (int i = 0; i < k; i++) { System.out.print(ans.get(i) + " "); } } else { System.out.println("NO"); } } // Driver code public static void main(String args[]) { int n = 10, k = 3; getArrayOfSizeK(n, k); } } // This code is contributed by Surendra_Gangwar
Python3
# Python 3 implementation to find an # array of size K with all the # even or odd elements in the array # Function to find the array with # all the even / odd elements def getArrayOfSizeK(n, k): ans = [] # If array could be constructed # by adding odd elements # we need to find the kth # element is odd or even # if array of odd elements # would be the answer then # k-1 elements would be 1 # First let's check # kth is odd or even odd = n - ((k - 1) * 1) # if last element is also # an odd number then # we can choose odd # elements for our answer if (odd > 0 and odd % 2 != 0): # Add 1 in the array (k-1) times for i in range(k - 1): ans.append(1) # Add last odd element ans.append(odd) # If array of even elements # would be the answer then # k-1 elements would be 2 even = n - ((k - 1) * 2) # if last element is also # an even number then # we can choose even # elements for our answer if (even > 0 and even % 2 == 0 and len(ans) == 0): # Add 2 in the array (k-1) times for i in range(k - 1): ans.append(2) # Add last even element ans.append(even) # Printing the array if (len(ans) > 0): for i in range(k): print(ans[i], end=" ") else: print("NO") # Driver Code if __name__ == "__main__": n, k = 10, 3 getArrayOfSizeK(n, k) # This code is contributed by chitranayal
C#
// C# implementation to find an // array of size K with all the // even or odd elements in the array using System; using System.Collections.Generic; class GFG { // Function to find the array with // all the even / odd elements static void getArrayOfSizeK(int n, int k) { List<int> ans = new List<int>(); // If array could be constructed // by adding odd elements // we need to find the kth // element is odd or even // If array of odd elements // would be the answer then // k-1 elements would be 1 // First let's check // kth is odd or even int odd = n - ((k - 1) * 1); // If last element is also // an odd number then // we can choose odd // elements for our answer if (odd > 0 && odd % 2 != 0) { // Add 1 in the array (k-1) times for (int i = 0; i < k - 1; i++) { ans.Add(1); } // Add last odd element ans.Add(odd); } // If array of even elements // would be the answer then // k-1 elements would be 2 int even = n - ((k - 1) * 2); // If last element is also // an even number then // we can choose even // elements for our answer if (even > 0 && even % 2 == 0 && ans.Count == 0) { // Add 2 in the array (k-1) times for (int i = 0; i < k - 1; i++) { ans.Add(2); } // Add last even element ans.Add(even); } // Printing the array if (ans.Count > 0) { for (int i = 0; i < k; i++) { Console.Write(ans[i] + " "); } } else { Console.WriteLine("NO"); } } // Driver code public static void Main(String[] args) { int n = 10, k = 3; getArrayOfSizeK(n, k); } } // This code is contributed by amal kumar choubey
Javascript
<script> // Javascript implementation to find an // array of size K with all the // even or odd elements in the array // Function to find the array with // all the even / odd elements function getArrayOfSizeK(n, k) { let ans = []; // If array could be constructed // by adding odd elements // we need to find the kth // element is odd or even // If array of odd elements // would be the answer then // k-1 elements would be 1 // First let's check // kth is odd or even let odd = n - ((k - 1) * 1); // If last element is also // an odd number then // we can choose odd // elements for our answer if (odd > 0 && odd % 2 != 0) { // Add 1 in the array (k-1) times for(let i = 0; i < k - 1; i++) { ans.push(1); } // Add last odd element ans.push(odd); } // If array of even elements // would be the answer then // k-1 elements would be 2 let even = n - ((k - 1) * 2); // If last element is also // an even number then // we can choose even // elements for our answer if (even > 0 && even % 2 == 0 && ans.length == 0) { // Add 2 in the array (k-1) times for(let i = 0; i < k - 1; i++) { ans.push(2); } // Add last even element ans.push(even); } // Printing the array if (ans.length > 0) { for(let i = 0; i < k; i++) { document.write(ans[i] + " "); } } else { document.write("NO"); } } // Driver Code let n = 10, k = 3; getArrayOfSizeK(n, k); // This code is contributed by target_2. </script>
Go
// Go implementation to find an // array of size K with all the // even or odd elements in the array package main import "fmt" // Function to find the array with // all the even / odd elements func getArrayOfSizeK(n, k int) { ans := make([]int, 0) // If array could be constructed // by adding odd elements // we need to find the kth // element is odd or even // If array of odd elements // would be the answer then // k-1 elements would be 1 // First let's check // kth is odd or even odd := n - ((k - 1) * 1) if odd > 0 && odd % 2 != 0 { // Add 1 in the array (k-1) times for i := 0; i < k - 1; i++ { ans = append(ans, 1) } // Add last odd element ans = append(ans, odd) } // If array of even elements // would be the answer then // k-1 elements would be 2 even := n - ((k - 1) * 2) // if last element is also // an even number then // we can choose even // elements for our answer if even > 0 && even % 2 == 0 && len(ans) == 0 { // Add 2 in the array (k-1) times for i := 0; i < k - 1; i++ { ans = append(ans, 2) } // Add last even element ans = append(ans, even) } // Printing the array if len(ans) > 0 { for i := 0; i < k; i++ { fmt.Print(ans[i], " ") } } else { fmt.Println("NO") } } // Driver Code func main() { n, k := 10, 3; getArrayOfSizeK(n, k); }
2 2 6
Complejidad de tiempo: O(k), donde k representa el entero dado.
Espacio Auxiliar: O(k), donde k representa el entero dado.
Publicación traducida automáticamente
Artículo escrito por raghav9352 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA