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

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

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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 `

Output:

```1, 1, 1, 2, 13
```

Time Complexity: O(K) My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.