Dividir un número en dos partes – Part 2

Dado un número entero N que contiene el dígito 4 al menos una vez. La tarea es dividir el número en dos partes x1 y x2 tal que: 
 

  • x1 + x2 = norte .
  • Y ninguna de las partes contiene el dígito 4 .

Tenga en cuenta que puede haber varias respuestas.
Ejemplos: 
 

Entrada: N = 4 
Salida: 1 3 
1 + 3 = 4
Entrada: N = 9441 
Salida: 9331 110 
9331 + 110 = 9441 
 

Enfoque: dado que el número puede ser demasiado grande, tome el número como una string. Dividirlo en dos strings:  

  • Para la string 1, encuentre todas las posiciones del dígito 4 en la string, cámbielo a 3, también podemos cambiarlo a otro número.
  • Para la segunda string, coloque 1 en todas las posiciones del dígito 4 y coloque 0 en todas las posiciones restantes desde la primera posición del dígito 4 hasta el final de la string.

A continuación se muestra la implementación del enfoque anterior: 
 

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>
Producción: 

9331 110

 

Complejidad de Tiempo: O(N)
Espacio Auxiliar: O(1), ya que no se ha tomado espacio extra.

Publicación traducida automáticamente

Artículo escrito por SURENDRA_GANGWAR y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *