 GeeksforGeeks App
Open App Browser
Continue

# 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:

• (K – 1) must be less than N.
• N – (K – 1) must be a Odd number.

Below is the implementation of the above approach:

## C++

 `// C++ implementation to represent``// N as sum of K even numbers` `#include ` `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

 `// 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

 `# 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#

 `// 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`

## JavaScript

 ``

Output:

`1 1 3`

Time Complexity: O(k)

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up