Dado un entero N , la tarea es encontrar N enteros distintos cuya suma sea N . Si hay más de una combinación de números enteros, imprima cualquiera de ellos.
Ejemplos:
Entrada: N = 3
Salida: 1, -1, 3
Explicación:
Al sumar los números que es 1 + (-1) + 3 la suma es 3.Entrada: N = 4
Salida: 1, -1, 0, 4
Explicación:
Al sumar los números que es 1 + (-1) + 0 + (4) la suma es 4.
Enfoque: la idea es imprimir N/2 pares simétricos como (+x, -x) para que la suma resultante siempre sea 0 .
Ahora, si el entero N es impar , imprima N junto con este conjunto de enteros para hacer que la suma de todos los enteros sea igual a N.
Si N es par, imprima 0 y N junto con este conjunto de enteros para hacer que la suma de todos los enteros sea igual a N.
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 print distinct N // numbers whose sum is N void findNumbers(int N) { // To store how many symmetric // pairs needs to be calculated int half = N / 2; // For even N we have to print // one less symmetric pair if (N % 2 == 0) { half--; } // Iterate till [1 n/2] and Print // all symmetric pairs(i, -i) for (int i = 1; i <= half; i++) { // Print 2 symmetric numbers cout << (-1) * i << ", " << i << ", "; } // if N is Odd, then print N if (N & 1) { cout << N << endl; } // Else print(0, N) else { cout << 0 << ", " << N << endl; } } // Driver Code int main() { // Given Sum int N = 5; // Function Call findNumbers(N); return 0; }
Java
// Java for the above approach class GFG{ // Function to print distinct N // numbers whose sum is N public static void findNumbers(int N) { // To store how many symmetric // pairs needs to be calculated int half = N / 2; // For even N we have to print // one less symmetric pair if (N % 2 == 0) { half--; } // Iterate till [1 n/2] and Print // all symmetric pairs(i, -i) for(int i = 1; i <= half; i++) { // Print 2 symmetric numbers System.out.print((-1) * i + ", " + i + ", "); } // if N is Odd, then print N int check = N & 1; if (check != 0) { System.out.println(N); } // Else print(0, N) else { System.out.println(0 + ", " + N); } } // Driver code public static void main(String[] args) { // Given sum int N = 5; // Function sall findNumbers(N); } } // This code is contributed by divyeshrabadiya07
Python3
# Python3 code for the above approach # Function to print distinct N # numbers whose sum is N def findNumbers(N): # To store how many symmetric # pairs needs to be calculated half = int(N / 2) # For even N we have to print # one less symmetric pair if (N % 2 == 0): half = half - 1 # Iterate till [1 n/2] and Print # all symmetric pairs(i, -i) for i in range(1, half + 1): # Print 2 symmetric numbers print((-1) * i, end = ', ') print(i, end = ', ') # If N is Odd, then print N if (N & 1): print(N, end = '\n') # Else print(0, N) else: print(0, end = ', ') print(N, end = '\n') # Driver Code N = 5 # Function Call findNumbers(N) # This code is contributed by PratikBasu
C#
// C# for the above approach using System; class GFG{ // Function to print distinct N // numbers whose sum is N public static void findNumbers(int N) { // To store how many symmetric // pairs needs to be calculated int half = N / 2; // For even N we have to print // one less symmetric pair if (N % 2 == 0) { half--; } // Iterate till [1 n/2] and Print // all symmetric pairs(i, -i) for(int i = 1; i <= half; i++) { // Print 2 symmetric numbers Console.Write((-1) * i + ", " + i + ", "); } // if N is Odd, then print N int check = N & 1; if (check != 0) { Console.Write(N + "\n"); } // Else print(0, N) else { Console.Write(0 + ", " + N + "\n"); } } // Driver code public static void Main(string[] args) { // Given sum int N = 5; // Function sall findNumbers(N); } } // This code is contributed by rutvik_56
Javascript
<script> // javascript program for the above approach // Function to print distinct N // numbers whose sum is N function findNumbers( N) { // To store how many symmetric // pairs needs to be calculated let half = parseInt(N / 2); // For even N we have to print // one less symmetric pair if (N % 2 == 0) { half--; } // Iterate till [1 n/2] and Print // all symmetric pairs(i, -i) for (let i = 1; i <= half; i++) { // Print 2 symmetric numbers document.write( (-1) * i + ", " + i + ", "); } // if N is Odd, then print N if (N & 1) { document.write( N); } // Else print(0, N) else { document.write( 0 + ", " + N +"<br/>"); } } // Driver Code // Given Sum let N = 5; // Function Call findNumbers(N); // This code contributed by aashish1995 </script>
Producción:
-1,1,-2,2,5