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

• Last Updated : 20 Apr, 2021

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)

My Personal Notes arrow_drop_up