# Split a number as sum of K numbers which are not divisible by K

Last Updated : 16 Sep, 2022

Given two numbers N and K, the task is to split this number into K positive integers such that their sum is equal to N and none of these K integers is a multiple of K.
Note: N>=2

Examples:

Input: N = 10, K = 3
Output: 1, 1, 8
Input: N = 18, K = 3
Output:1, 1, 16

Approach:
To split N into K numbers, we need to approach the problem by the following steps:

• Check if N is divisible by K or not.
• If N is divisible by K, then N – K + 1 is not divisible by K. Hence, we can split N into N – K + 1 as one part and all the remaining K – 1 parts as 1.
• If N is not divisible by K
• If K is 2, then it is not possible to split.
• Otherwise, split N into K-2 parts as all 1 and 2 and N – K as the remaining two parts.

Below code is the implementation of the above approach:

## C++

 `// C++ program to split a number` `// as sum of K numbers which are` `// not divisible by K`   `#include ` `using` `namespace` `std;`   `// Function to split into K parts` `// and print them` `void` `printKParts(``int` `N, ``int` `K)` `{` `    ``if` `(N % K == 0) {`   `        ``// Print 1 K - 1 times` `        ``for` `(``int` `i = 1; i < K; i++)` `            ``cout << ``"1, "``;`   `        ``// Print N - K + 1` `        ``cout << N - (K - 1) << endl;` `    ``}` `    ``else` `{` `        ``if` `(K == 2) {` `            ``cout << ``"Not Possible"` `<< endl;` `            ``return``;` `        ``}`   `        ``// Print 1 K-2 times` `        ``for` `(``int` `i = 1; i < K - 1; i++)` `            ``cout << 1 << ``", "``;`   `        ``// Print 2 and N - K` `        ``cout << 2 << ``", "` `             ``<< N - K << endl;` `    ``}` `}`   `// Driver code` `int` `main()` `{` `    ``int` `N = 18, K = 5;` `    ``printKParts(N, K);` `    ``return` `0;` `}`

## Java

 `// Java program to split a number` `// as sum of K numbers which are` `// not divisible by K` `class` `GFG{`   `// Function to split into K parts` `// and print them` `static` `void` `printKParts(``int` `N, ``int` `K)` `{` `    ``if` `(N % K == ``0``)` `    ``{` `        `  `        ``// Print 1 K - 1 times` `        ``for``(``int` `i = ``1``; i < K; i++)` `           ``System.out.print(``"1, "``);`   `        ``// Print N - K + 1` `        ``System.out.print(N - (K - ``1``) + ``"\n"``);` `    ``}` `    ``else` `    ``{` `        ``if` `(K == ``2``)` `        ``{` `            ``System.out.print(``"Not Possible"` `+ ``"\n"``);` `            ``return``;` `        ``}`   `        ``// Print 1 K-2 times` `        ``for``(``int` `i = ``1``; i < K - ``1``; i++)` `           ``System.out.print(``1` `+ ``", "``);`   `        ``// Print 2 and N - K` `        ``System.out.print(``2` `+ ``", "` `+ (N - K) + ``"\n"``);` `    ``}` `}`   `// Driver code` `public` `static` `void` `main(String[] args)` `{` `    ``int` `N = ``18``, K = ``5``;` `    `  `    ``printKParts(N, K);` `}` `}`   `// This code is contributed by 29AjayKumar`

## Python3

 `# Python3 program to split a number` `# as sum of K numbers which are` `# not divisible by K`   `# Function to split into K parts` `# and print them` `def` `printKParts(N, K):` `    `  `    ``if` `(N ``%` `K ``=``=` `0``):`   `        ``# Print 1 K - 1 times` `        ``for` `i ``in` `range``(``1``, K):` `            ``print``(``"1, "``);`   `        ``# Print N - K + 1` `        ``print``(N ``-` `(K ``-` `1``), end ``=` `"");` `    ``else``:` `        ``if` `(K ``=``=` `2``):` `            ``print``(``"Not Possible"``, end ``=` `"");` `            ``return``;` `            `  `    ``# Print 1 K-2 times` `    ``for` `i ``in` `range``(``1``, K ``-` `1``):` `        ``print``(``1``, end ``=` `", "``);`   `    ``# Print 2 and N - K` `    ``print``(``2``, ``", "``, (N ``-` `K), end ``=` `"");`   `# Driver code` `if` `__name__ ``=``=` `'__main__'``:` `    `  `    ``N ``=` `18``;` `    ``K ``=` `5``;`   `    ``printKParts(N, K);`   `# This code is contributed by Rohit_ranjan`

## C#

 `// C# program to split a number` `// as sum of K numbers which are` `// not divisible by K` `using` `System;`   `class` `GFG{`   `// Function to split into K parts` `// and print them` `static` `void` `printKParts(``int` `N, ``int` `K)` `{` `    ``if` `(N % K == 0)` `    ``{` `        `  `        ``// Print 1 K - 1 times` `        ``for``(``int` `i = 1; i < K; i++)` `           ``Console.Write(``"1, "``);`   `        ``// Print N - K + 1` `        ``Console.Write(N - (K - 1) + ``"\n"``);` `    ``}` `    ``else` `    ``{` `        ``if` `(K == 2)` `        ``{` `            ``Console.Write(``"Not Possible"` `+ ``"\n"``);` `            ``return``;` `        ``}`   `        ``// Print 1 K-2 times` `        ``for``(``int` `i = 1; i < K - 1; i++)` `           ``Console.Write(1 + ``", "``);`   `        ``// Print 2 and N - K` `        ``Console.Write(2 + ``", "` `+ (N - K) + ``"\n"``);` `    ``}` `}`   `// Driver code` `public` `static` `void` `Main(String[] args)` `{` `    ``int` `N = 18, K = 5;` `    `  `    ``printKParts(N, K);` `}` `}`   `// This code is contributed by sapnasingh4991`

## Javascript

 ``

Output:

`1, 1, 1, 2, 13`

Time Complexity: O(K)
Auxiliary Space: O(1)