Find K distinct positive odd integers with sum N

• Difficulty Level : Basic
• Last Updated : 21 Apr, 2021

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.

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 Nvoid 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 Codeint 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 numberimport java.util.*; class GFG{  // Function to find K odd positive// integers such that their sum is Nstatic 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 Codepublic 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 Ndef 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 Coden = 100k = 4findDistinctOddsumm(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 numberusing System; public class GFG{   // Function to find K odd positive// integers such that their sum is Nstatic 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 Codepublic static void Main(String[] args){    int n = 100;    int k = 4;    findDistinctOddSum(n, k);}}// This code is contributed by 29AjayKumar

Javascript


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)

My Personal Notes arrow_drop_up