给定一个整数N ,任务是找到总和为N的N个不同的整数。如果整数的组合不止一个,请打印其中的任何一个。
例子:
Input: N = 3
Output: 1, -1, 3
Explanation:
On adding the numbers that is 1 + (-1) + 3 the sum is 3.
Input: N = 4
Output: 1, -1, 0, 4
Explanation:
On adding the numbers that is 1 + (-1) + 0 + (4) the sum is 4.
方法:想法是打印N / 2个对称对,例如(+ x,-x),这样结果总和将始终为0 。
现在,如果整数N为奇数,则将N与这些整数集一起打印以使所有整数的总和等于N
如果N为偶数,则输出0和N以及这些整数集,以使所有整数之和等于N。
下面是上述方法的实现:
C++
// C++ for the above approach
#include
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
输出:
-1,1,-2,2,5