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>
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