Open In App

Find K distinct positive odd integers with sum N

Improve
Improve
Like Article
Like
Save
Share
Report

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 <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 sum 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


Javascript




<script>
 
 
// Function to find K odd positive
// integers such that their sum is N
function findDistinctOddSum(n,k)
{
    // Condition to check if there
    // are enough values to check
    if ((k * k) <= n &&
        (n + k) % 2 == 0){
        var val = 1;
        var sum = 0;
        for(var i = 1; i < k; i++){
            document.write( val+ " ");
            sum += val;
            val += 2;
        }
        document.write( n - sum) ;    }
    else
        document.write( "NO \n");
}
 
// Driver Code
var n = 100;
    var k = 4;
    findDistinctOddSum(n, k);
 
 
</script>


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)

 



Last Updated : 04 Jan, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads