Número formado al eliminar dígitos de manera que la suma de los dígitos se vuelve par y el número impar

Dado un número N no negativo , la tarea es convertir el número eliminando algunos dígitos del número, de modo que la suma de los dígitos sea par pero el número sea impar. En caso de que no haya un número posible, imprima -1 .
Nota: Puede haber múltiples números posibles para un N dado.
Ejemplos: 
 

Entrada: N = 18720 
Salida: 17 
Explicación: 
 

Después de eliminar 8, 2, 0 dígitos, el número se convierte en 17, que es impar, y la suma de dígitos es 8, que es par.
Entrada: N = 3 
Salida: -1 
Explicación: 
No existe la posibilidad de que el número se vuelva impar y la suma de los dígitos sea par. 
 

Enfoque: 
La idea es utilizar el hecho de que «un número par de dígitos impares dará la suma de un número par» . Entonces, si los dígitos en el número contienen un conteo par de dígitos impares, entonces es posible convertir el número; de lo contrario, no es posible convertir dicho número.
A continuación se muestra la implementación del enfoque anterior. 
 

C++

// C++ implementation to convert
// a number into odd number such
// that digit-sum is odd
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to convert a number into
// odd number such that digit-sum is odd
void converthenumber(int n)
{
    string s = to_string(n);
    string res;
 
    // Loop to find any first two
    // odd number such that their
    // sum is even and number is odd
    for (int i = 0; i < s.length(); i++) {
        if (s[i] == '1' || s[i] == '3'
            || s[i] == '5' || s[i] == '7'
            || s[i] == '9')
            res += s[i];
        if (res.size() == 2)
            break;
    }
 
    // Print the result
    if (res.size() == 2)
        cout << res << endl;
    else
        cout << "-1" << endl;
}
 
// Driver Code
int main()
{
    int n = 18720;
    converthenumber(n);
 
    return 0;
}

Java

// Java implementation to convert
// a number into odd number such
// that digit-sum is odd
import java.util.*;
import java.lang.*;
import java.io.*;
 
class Main
{
 
// Function to convert a number into
// odd number such that digit-sum is odd
static void converthenumber(int n)
{
    String s = Integer.toString(n);
    String res = "";
 
    // Loop to find any first two
    // odd number such that their
    // sum is even and number is odd
    for (int i = 0; i < s.length(); i++)
    {
        if (s.charAt(i) == '1' || s.charAt(i) == '3'
            || s.charAt(i) == '5' || s.charAt(i) == '7'
            || s.charAt(i) == '9')
            res += s.charAt(i);
        if (res.length() == 2)
            break;
    }
 
    // Print the result
    if (res.length() == 2)
        System.out.println(res);
    else
        System.out.println(-1);
}
 
// Driver code
public static void main (String[] args)
{
    int n = 18720;
    converthenumber(n);
}
}
 
// This code is contributed by Subhadeep Gupta

Python3

# Python3 implementation to convert
# a number into odd number such
# that digit-sum is odd
 
# Function to convert a number into
# odd number such that digit-sum is odd
def converthenumber(n) :
    s = str(n);
    res = "";
     
    # Loop to find any first two
    # odd number such that their
    # sum is even and number is odd
    for i in range(len(s)) :
        if (s[i] == '1' or s[i] == '3'
        or s[i] == '5' or s[i] == '7'
        or s[i] == '9') :
            res += s[i];
             
        if (len(res) == 2) :
            break;
             
    # Print the result
    if (len(res) == 2) :
        print(res);
         
    else :
        print("-1");
 
# Driver Code
if __name__ == "__main__" :
 
    n = 18720;
    converthenumber(n);
 
# This code is contributed by AnkitRai01

C#

// C# implementation to convert
// a number into odd number such
// that digit-sum is odd
using System;
 
class GFG
{
 
 
// Function to convert a number into
// odd number such that digit-sum is odd
static void converthenumber(int n)
{
    String s = n.ToString();
    String res = "";
 
    // Loop to find any first two
    // odd number such that their
    // sum is even and number is odd
    for (int i = 0; i < s.Length; i++)
    {
        if (s[i] == '1' || s[i] == '3'
            || s[i] == '5' || s[i] == '7'
            || s[i] == '9')
            res += s[i];
        if (res.Length == 2)
            break;
    }
 
    // Print the result
    if (res.Length == 2)
        Console.WriteLine(res);
    else
        Console.WriteLine(-1);
}
 
// Driver code
public static void Main (String[] args)
{
    int n = 18720;
    converthenumber(n);
}
}
 
// This code is contributed by Mohit kuamr 29

Javascript

<script>
 
// Javascript implementation to convert
// a number into odd number such
// that digit-sum is odd
 
// Function to convert a number into
// odd number such that digit-sum is odd
function converthenumber(n)
{
    var s = n.toString();
    var res = "";
     
    var i;
    // Loop to find any first two
    // odd number such that their
    // sum is even and number is odd
    for (i = 0; i < s.length; i++) {
        if (s[i] == '1' || s[i] == '3'
            || s[i] == '5' || s[i] == '7'
            || s[i] == '9')
            res += s[i];
        if (res.length == 2)
            break;
    }
 
    // Print the result
    if (res.length == 2)
        document.write(res);
    else
        document.write("-1");
}
 
// Driver Code
    var n = 18720;
    converthenumber(n);
 
</script>
Producción: 

17

 

Complejidad de tiempo: O(|s|)

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por IshwarGupta 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 *