给定非负数N ,任务是通过删除数字的一些数字来转换数字,以使数字的总和变为偶数而数字为奇数。如果没有可能的数字,请打印-1 。
注意:给定的N可能有多个数字。
例子:
Input: N = 18720
Output: 17
Explanation:
After Deleting 8, 2, 0 digits the number becomes 17 which is odd and the digit-sum is 8 which is even.
Input: N = 3
Output: -1
Explanation:
There is no possibility such that number becomes odd and the digit-sum is even.
方法:
这个想法是利用这样的事实: “偶数个偶数将使和成为偶数” 。因此,如果数字中的数字包含奇数个偶数,则可以转换数字,否则无法转换。
下面是上述方法的实现。
C++
// C++ implementation to convert
// a number into odd number such
// that digit-sum is odd
#include
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
输出:
17