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 = 2Output:1 9Explanation:

Two odd positive integers such that their sum is 10 can be (1, 9) or (3, 7).

Input:N = 10, K = 4Output:NOExplanation:

There does not exists four odd positive integers with sum 10.

**Approach:**

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

- If the square of K is less than or equal to N and,
- 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 <bits/stdc++.h>` `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)

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the **Essential Maths for CP Course** at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**