# Find K distinct positive odd integers with sum N

Given two integers N and K, the task is to find K distinct positive odd integers such that their sum is equal to the given number N.

Examples:

Input: N = 10, K = 2
Output: 1 9
Explanation:
Two odd positive integers such that their sum is 10 can be (1, 9) or (3, 7).

Input: N = 10, K = 4
Output: NO
Explanation:
There does not exists four odd positive integers with sum 10.

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:

The number N can be represented as the sum of K positive odd integers only is the following two conditions satisfies:

1. If the square of K is less than or equal to N and,
2. If the sum of N and K is an even number.

If these conditions are satisfied then there exist K positive odd integers whose sum is N.

To generate K such odd numbers:

• Print first K-1 odd numbers starting from 1, i.e. 1, 3, 5, 7, 9…….
• The last odd number will be : N – (Sum of first K-1 odd positive integers)

Below is the implementation of the above approach:

## C++

 `// C++ implementation to find K  ` `// odd positive integers such that ` `// their sum is equal to given number ` ` `  `#include ` `using` `namespace` `std; ` ` `  `#define ll long long int ` ` `  `// Function to find K odd positive ` `// integers such that their sum is N ` `void` `findDistinctOddSum(ll n, ll k) ` `{ ` `    ``// Condition to check if there ` `    ``// are enough values to check ` `    ``if` `((k * k) <= n &&  ` `        ``(n + k) % 2 == 0){ ` `        ``int` `val = 1; ` `        ``int` `sum = 0; ` `        ``for``(``int` `i = 1; i < k; i++){ ` `            ``cout << val << ``" "``; ` `            ``sum += val; ` `            ``val += 2; ` `        ``} ` `        ``cout << n - sum << endl; ` `    ``} ` `    ``else` `        ``cout << ``"NO \n"``; ` `} ` ` `  `// Driver Code ` `int` `main() ` `{ ` `    ``ll n = 100; ` `    ``ll k = 4; ` `    ``findDistinctOddSum(n, k); ` `    ``return` `0; ` `} `

## Java

 `// Java implementation to find K  ` `// odd positive integers such that ` `// their sum is equal to given number ` `import` `java.util.*; ` ` `  `class` `GFG{ ` `  `  `// Function to find K odd positive ` `// integers such that their sum is N ` `static` `void` `findDistinctOddSum(``int` `n, ``int` `k) ` `{ ` `    ``// Condition to check if there ` `    ``// are enough values to check ` `    ``if` `((k * k) <= n &&  ` `        ``(n + k) % ``2` `== ``0``){ ` `        ``int` `val = ``1``; ` `        ``int` `sum = ``0``; ` `        ``for``(``int` `i = ``1``; i < k; i++){ ` `            ``System.out.print(val+ ``" "``); ` `            ``sum += val; ` `            ``val += ``2``; ` `        ``} ` `        ``System.out.print(n - sum +``"\n"``); ` `    ``} ` `    ``else` `        ``System.out.print(``"NO \n"``); ` `} ` `  `  `// Driver Code ` `public` `static` `void` `main(String[] args) ` `{ ` `    ``int` `n = ``100``; ` `    ``int` `k = ``4``; ` `    ``findDistinctOddSum(n, k); ` `} ` `} ` ` `  `// This code is contributed by PrinciRaj1992 `

## Python3

 `# Python3 implementation to find K  ` `# odd positive integers such that ` `# their summ is equal to given number ` ` `  `# Function to find K odd positive ` `# integers such that their summ is N ` `def` `findDistinctOddsumm(n, k): ` `     `  `    ``# Condition to check if there ` `    ``# are enough values to check ` `    ``if` `((k ``*` `k) <``=` `n ``and` `(n ``+` `k) ``%` `2` `=``=` `0``): ` `        ``val ``=` `1` `        ``summ ``=` `0` `        ``for` `i ``in` `range``(``1``, k): ` `            ``print``(val, end ``=`  `" "``) ` `            ``summ ``+``=` `val ` `            ``val ``+``=` `2` `        ``print``(n ``-` `summ) ` `    ``else``: ` `        ``print``(``"NO"``) ` ` `  `# Driver Code ` `n ``=` `100` `k ``=` `4` `findDistinctOddsumm(n, k) ` ` `  `# This code is contributed by shubhamsingh10 `

## C#

 `// C# implementation to find K  ` `// odd positive integers such that ` `// their sum is equal to given number ` `using` `System; ` ` `  `public` `class` `GFG{ ` `   `  `// Function to find K odd positive ` `// integers such that their sum is N ` `static` `void` `findDistinctOddSum(``int` `n, ``int` `k) ` `{ ` `    ``// Condition to check if there ` `    ``// are enough values to check ` `    ``if` `((k * k) <= n &&  ` `        ``(n + k) % 2 == 0){ ` `        ``int` `val = 1; ` `        ``int` `sum = 0; ` `        ``for``(``int` `i = 1; i < k; i++){ ` `            ``Console.Write(val+ ``" "``); ` `            ``sum += val; ` `            ``val += 2; ` `        ``} ` `        ``Console.Write(n - sum +``"\n"``); ` `    ``} ` `    ``else` `        ``Console.Write(``"NO \n"``); ` `} ` `   `  `// Driver Code ` `public` `static` `void` `Main(String[] args) ` `{ ` `    ``int` `n = 100; ` `    ``int` `k = 4; ` `    ``findDistinctOddSum(n, k); ` `} ` `} ` `// This code is contributed by 29AjayKumar `

Output:

```1 3 5 91
```

Performance Analysis:

• Time Complexity: In the above-given approach, there is one loop which takes O(K) time in the worst case. Therefore, the time complexity for this approach will be O(K).
• Auxiliary Space: O(1)

GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.