📜  删去数位,使数位之和为偶数而形成的数为奇数

📅  最后修改于: 2021-09-06 06:39:15             🧑  作者: Mango

给定一个非负数N ,任务是通过删除数字的一些数字来转换数字,使得数字之和变为偶数但数字是奇数。如果没有可能的数字,则打印-1
注意:给定的 N 可以有多个可能的数字。
例子:

方法:
这个想法是利用“偶数奇数将和偶数相加”这一事实。因此,如果数字中的数字包含偶数个奇数,则可以转换数字,否则无法转换此类数字。
下面是上述方法的实现。

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