# Divide a number into two parts

• Difficulty Level : Basic
• Last Updated : 19 Oct, 2022

Given an integer N containing the digit 4 at least once. The task is to divide the number into two parts x1 and x2 such that:

• x1 + x2 = N.
• And none of the parts contain the digit 4.

Note that there may be multiple answers.
Examples:

Input: N = 4
Output: 1 3
1 + 3 = 4

Input: N = 9441
Output: 9331 110
9331 + 110 = 9441

Approach: Since number can be too large take the number as string. Divide it into two strings:

• For string 1, find all the positions of digit 4 in the string change it to 3 we can also change it to another number.
• For the second string put 1 at all positions of digit 4 and put 0 at all remaining positions from the 1st position of digit 4 to the end of the string.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;` `// Function to print the two parts``void` `twoParts(string str)``{``    ``int` `flag = 0;``    ``string a = ``""``;` `    ``// Find the position of 4``    ``for` `(``int` `i = 0; i < str.length(); i++) {``        ``if` `(str[i] == ``'4'``) {``            ``str[i] = ``'3'``;``            ``a += ``'1'``;``            ``flag = 1;``        ``}` `        ``// If current character is not '4'``        ``// but appears after the first``        ``// occurrence of '4'``        ``else` `if` `(flag)``            ``a += ``'0'``;``    ``}` `    ``// Print both the parts``    ``cout << str << ``" "` `<< a;``}` `// Driver code``int` `main()``{``    ``string str = ``"9441"``;``    ``twoParts(str);` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach``class` `GfG {` `    ``// Function to print the two parts``    ``static` `void` `twoParts(String str)``    ``{``        ``int` `flag = ``0``;``        ``String a = ``""``;``        ``char``[] gfg = str.toCharArray();` `        ``// Find the position of 4``        ``for` `(``int` `i = ``0``; i < str.length(); i++) {``            ``if` `(gfg[i] == ``'4'``) {``                ``gfg[i] = ``'3'``;``                ``a += ``'1'``;``                ``flag = ``1``;``            ``}` `            ``// If current character is not '4'``            ``// but appears after the first``            ``// occurrence of '4'``            ``else` `if` `(flag != ``0``)``                ``a += ``'0'``;``        ``}` `        ``str = ``new` `String(gfg);` `        ``// Print both the parts``        ``System.out.print(str + ``" "` `+ a);``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``String str = ``"9441"``;``        ``twoParts(str);``    ``}``}` `// This code is contributed by Rituraj Jain`

## Python3

 `# Python3 implementation of the approach` `# Function to print the two parts`  `def` `twoParts(string):` `    ``flag ``=` `0``    ``a ``=` `""` `    ``# Find the position of 4``    ``for` `i ``in` `range``(``len``(string)):` `        ``if` `(string[i] ``=``=` `'4'``):``            ``string[i] ``=` `'3'``            ``a ``+``=` `'1'``            ``flag ``=` `1` `        ``# If current character is not '4'``        ``# but appears after the first``        ``# occurrence of '4'``        ``elif` `(flag):``            ``a ``+``=` `'0'` `    ``string ``=` `"".join(string)` `    ``# Print both the parts``    ``print``(string, a)`  `# Driver code``if` `__name__ ``=``=` `"__main__"``:` `    ``string ``=` `"9441"` `    ``twoParts(``list``(string))` `# This code is contributed by Ryuga`

## C#

 `// C# implementation of the approach``using` `System;` `class` `GfG {` `    ``// Function to print the two parts``    ``static` `void` `twoParts(``string` `str)``    ``{``        ``int` `flag = 0;``        ``string` `a = ``""``;``        ``char``[] gfg = str.ToCharArray();` `        ``// Find the position of 4``        ``for` `(``int` `i = 0; i < str.Length; i++) {``            ``if` `(gfg[i] == ``'4'``) {``                ``gfg[i] = ``'3'``;``                ``a += ``'1'``;``                ``flag = 1;``            ``}` `            ``// If current character is not '4'``            ``// but appears after the first``            ``// occurrence of '4'``            ``else` `if` `(flag != 0)``                ``a += ``'0'``;``        ``}` `        ``str = ``new` `String(gfg);` `        ``// Print both the parts``        ``Console.WriteLine(str + ``" "` `+ a);``    ``}` `    ``// Driver code``    ``static` `void` `Main()``    ``{``        ``string` `str = ``"9441"``;``        ``twoParts(str);``    ``}``}` `// This code is contributed by mits`

## PHP

 ``

## Javascript

 ``

Output:

`9331 110`

Time Complexity: O(N)
Auxiliary Space: O(N)

My Personal Notes arrow_drop_up