首页 > 试题广场 >

游游的重组偶数

[编程题]游游的重组偶数
  • 热度指数:526 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
游游拿到了一个正整数,她希望你能重排这个正整数的数位,使得它变成偶数(不能有前导零)。你能帮帮她吗?
注:重排后可以和原数相等。
一共有 q 次询问。

输入描述:
第一行输入一个正整数 q,代表询问次数。
接下来的 q行,每行输入一个正整数 x



输出描述:
输出q行,每行代表一次询问。
如果存在合法解,请输出一个重排后的正整数,务必保证其为偶数。有多解时输出任意即可。
如果不存在合法解,直接输出-1。
示例1

输入

3
13
123
24

输出

-1
132
24
#include <iostream>

using namespace std;

int Q, x;

bool check(string s)
{
    for (int i = 0; i < s.size(); i ++ )
        if ((s[i] % 2) == 0)
            return true;
    return false;
}

int main()
{
    cin >> Q;
    while (Q -- )
    {
        cin >> x;
        string s = to_string(x);
        if (!check(s)) puts("-1");
        else
        {
            if ((s.back() % 2) == 0) cout << s << endl;
            else
            {
                for (int i = 0; i < s.size(); i ++ )
                    if ((s[i] % 2) == 0)
                    {
                        swap(s[i], s[s.size() - 1]);
                        break;
                    }
                cout << s << endl;
            }
        }
    }
    return 0;
}
发表于 2023-09-06 23:41:50 回复(0)