Dado un número N y un entero S , la tarea es crear una array de N enteros tal que la suma de todos los elementos sea igual a S e imprimir un elemento K donde 0 ≤ K ≤ S, tal que no exista ningún subarreglo con suma igual a K o (S – K) .
Si tal array no es posible, imprima «-1» .
Nota: Puede haber más de un valor para K . Puedes imprimir cualquiera de ellos.
Ejemplos:
Entrada: N = 1, S = 4
Salida: {4}
K = 2
Explicación:
existe una array {4} cuya suma es 4.
De todos los valores posibles de K, es decir, 0 ≤ K ≤ 4, K = 1, 2 , y 3 satisfacen las condiciones dadas.
Para K = 2, no hay subarreglo cuya suma sea 2 o S – K, es decir, 4 – 2 = 2.
Entrada: N = 3, S = 8
Salida: {2, 2, 4}
K = 1
Explicación:
existe una array {2, 2, 4} y existe K como 1 tal que no hay subarreglo cuya suma sea 1 y S – K, es decir, 8 – 1 = 7.
Planteamiento: Para resolver el problema mencionado anteriormente tenemos que observar que:
- Si 2 * N > S entonces no hay array posible.
Por ejemplo:
Para N = 3 y S = 4, las arrays posibles son {1, 2, 1}, {1, 1, 2}, {2, 1, 1}.
Los valores posibles para K son 0, 1, 2, 3 (0 < = k < = S).
Pero no hay valor para K que satisfaga la condición.
Entonces la solución a esto no es posible.
- Una array solo es posible si 2 * N <= S y la array se puede crear usando elementos (N-1) multiplicados por 2 y el último elemento como S – (2 * (N – 1)) y K siempre será 1.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ for the above approach #include<bits/stdc++.h> using namespace std; // Function to create an array with // N elements with sum as S such that // the given conditions satisfy void createArray(int n, int s) { // Check if the solution exists if (2 * n <= s) { // Print the array as // print (n-1) elements // of array as 2 for(int i = 0; i < n - 1; i++) { cout << "2" << " "; s -= 2; } // Print the last element // of the array cout << s << endl; // Print the value of k cout << "1" << endl; } else // If solution doesnot exists cout << "-1" << endl; } // Driver Code int main() { // Given N and sum S int N = 1; int S = 4; // Function call createArray(N, S); } // This code is contributed by Ritik Bansal
Java
// Java for the above approach class GFG{ // Function to create an array with // N elements with sum as S such that // the given conditions satisfy static void createArray(int n, int s) { // Check if the solution exists if (2 * n <= s) { // Print the array as // print (n-1) elements // of array as 2 for (int i = 0; i < n - 1; i++) { System.out.print(2 + " "); s -= 2; } // Print the last element // of the array System.out.println(s); // Print the value of k System.out.println(1); } else // If solution doesnot exists System.out.print("-1"); } // Driver Code public static void main(String[] args) { // Given N and sum S int N = 1; int S = 4; // Function call createArray(N, S); } } // This code is contributed by 29AjayKumar
Python3
# Python3 for the above approach # Function to create an array with # N elements with sum as S such that # the given conditions satisfy def createArray(n, s): # Check if the solution exists if (2 * n<= s): # Print the array as # print (n-1) elements # of array as 2 for i in range(n-1): print(2, end =" ") s-= 2 # Print the last element # of the array print(s) # Print the value of k print(1) else: # If solution doesnot exists print('-1') # Driver Code # Given N and sum S N = 1 S = 4 # Function call createArray(N, S)
C#
// C# program for the above approach using System; class GFG{ // Function to create an array with // N elements with sum as S such that // the given conditions satisfy static void createArray(int n, int s) { // Check if the solution exists if (2 * n <= s) { // Print the array as // print (n-1) elements // of array as 2 for(int i = 0; i < n - 1; i++) { Console.Write(2 + " "); s -= 2; } // Print the last element // of the array Console.WriteLine(s); // Print the value of k Console.WriteLine(1); } else // If solution doesnot exists Console.Write("-1"); } // Driver Code public static void Main() { // Given N and sum S int N = 1; int S = 4; // Function call createArray(N, S); } } // This code is contributed by Code_Mech
Javascript
<script> // JavaScript program to implement // the above approach // Function to create an array with // N elements with sum as S such that // the given conditions satisfy function createArray(n, s) { // Check if the solution exists if (2 * n <= s) { // Print the array as // print (n-1) elements // of array as 2 for (let i = 0; i < n - 1; i++) { document.write(2 + " "); s -= 2; } // Print the last element // of the array document.write(s + "<br/>"); // Print the value of k document.write(1); } else // If solution doesnot exists document.write("-1"); } // Driver code // Given N and sum S let N = 1; let S = 4; // Function call createArray(N, S); // This code is contributed by sanjoy_62. </script>
4 1
Complejidad temporal: O(N)
Espacio auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por guptaaakash63 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA