Skip to content
Related Articles

Related Articles

Improve Article

Divide a number into two parts

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

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 <bits/stdc++.h>
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




<?php
// PHP implementation of the approach
 
// Function to print the two parts
function twoParts($str)
{
    $flag = 0;
    $a = "";
 
    // Find the position of 4
    for ($i = 0; $i < strlen($str); $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
    echo $str . " " . $a;
}
 
// Driver code
$str = "9441";
twoParts($str);
 
// This code is contributed by mits
?>

Javascript




<script>
// javascript implementation of the approach
 
   
    // Function to print the two parts
     function twoParts( str)
    {
        var flag = 0;
        var a = "";
        var gfg = str.split('') ;
       
        // Find the position of 4
        for (var 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';
        }
           
       
        // Print both the parts
        document.write(gfg.join('') + " " + a);
    }
   
    // Driver code
 
        var str = "9441";
        twoParts(str);
         
        // This code is contributed by bunnyram19.
        </script>
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
Recommended Articles
Page :