Related Articles

# Divide a number into two parts

• Difficulty Level : Basic
• Last Updated : 04 May, 2021

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`

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

My Personal Notes arrow_drop_up