Open In App

Represent N as sum of K odd numbers with repetitions allowed

Given two integers N and K, the task is to represent N as sum of K odd numbers. If it is not possible to create the sum then output -1.
Note: The representation may contain duplicate odd numbers.
Examples:
 

Input: N = 5, K = 3 
Output: 1, 1, 3 
Explanation: 
The given number N can be represented as 1 + 1 + 3 = 5
Input: N = 7, K = 5 
Output: 1, 1, 1, 1, 3 
Explanation: 
The given number N can be represented as 1 + 1 + 1 + 1 + 3 = 7 
 

 

Approach: 
To solve the problem mentioned above a simple solution is to maximise the occurrence of 1 which is the possible smallest odd number. Necessary conditions for representing the number N as K odd numbers are: 
 

Below is the implementation of the above approach:
 




// C++ implementation to represent
// N as sum of K even numbers
 
#include <bits/stdc++.h>
 
using namespace std;
 
// Function to print the representation
void sumOddNumbers(int N, int K)
{
    int check = N - (K - 1);
 
    // N must be greater than equal to 2*K
    // and must be odd
    if (check > 0 && check % 2 == 1) {
        for (int i = 0; i < K - 1; i++) {
            cout << "1 ";
        }
        cout << check;
    }
    else
        cout << "-1";
}
 
// Driver Code
int main()
{
 
    int N = 5;
    int K = 3;
 
    sumOddNumbers(N, K);
    return 0;
}




// Java implementation to represent
// N as sum of K even numbers
import java.util.*;
 
class GFG{
 
// Function to print the representation
static void sumOddNumbers(int N, int K)
{
    int check = N - (K - 1);
 
    // N must be greater than equal
    // to 2*K and must be odd
    if (check > 0 && check % 2 == 1)
    {
        for(int i = 0; i < K - 1; i++)
        {
           System.out.print("1 ");
        }
        System.out.print(+check);
    }
    else
        System.out.println("-1 ");
}
 
// Driver Code
public static void main(String args[])
{
    int N = 5;
    int K = 3;
 
    sumOddNumbers(N, K);
}
}
 
// This code is contributed by AbhiThakur




# Python3 implementation to represent
# N as sum of K even numbers
 
# Function to print the representation
def sumOddNumbers(N, K):
 
    check = N - (K - 1)
 
    # N must be greater than equal 
    # to 2*K and must be odd
    if (check > 0 and check % 2 == 1):
        for i in range(0, K - 1):
            print("1", end = " ")
 
        print(check, end = " ")
 
    else:
        print("-1")
 
# Driver Code
N = 5
K = 3;
 
sumOddNumbers(N, K)
 
# This code is contributed by PratikBasu   




// C# implementation to represent
// N as sum of K even numbers
using System;
 
class GFG{
 
// Function to print the representation
static void sumOddNumbers(int N, int K)
{
    int check = N - (K - 1);
 
    // N must be greater than equal
    // to 2*K and must be odd
    if (check > 0 && check % 2 == 1)
    {
        for(int i = 0; i < K - 1; i++)
        {
           Console.Write("1 ");
        }
        Console.Write(+check);
    }
    else
        Console.WriteLine("-1 ");
}
 
// Driver Code
public static void Main()
{
    int N = 5;
    int K = 3;
 
    sumOddNumbers(N, K);
}
}
 
// This code is contributed by Code_Mech




<script>
 
// Javascript implementation to represent
// N as sum of K even numbers
 
// Function to print the representation
function sumOddNumbers(N, K)
{
    var check = N - (K - 1);
    var i;
 
    // N must be greater than equal to 2*K
    // and must be odd
    if (check > 0 && check % 2 == 1) {
        for (i = 0; i < K - 1; i++) {
             document.write("1,"+" ");
        }
        document.write(check + " ");
    }
    else
        document.write("-1");
}
 
// Driver Code
    var N = 5;
    var K = 3;
 
    sumOddNumbers(N, K);
     
</script>

Output: 
1 1 3

 

Time Complexity: O(k)

Auxiliary Space: O(1)
 


Article Tags :