hdu 5055(坑)

题目链接:http://acm.hdu.edu.cn/showproblem.php?

pid=5055

Bob and math problem

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 695    Accepted Submission(s): 263

Problem Description

Recently, Bob has been thinking about a math problem.

There are N Digits, each digit is between 0 and 9. You need to use this N Digits to constitute an Integer.

This Integer needs to satisfy the following conditions:

  • 1. must be an odd Integer.
  • 2. there is no leading zero.
  • 3. find the biggest one which is satisfied 1, 2.

Example:

There are three Digits: 0, 1, 3. It can constitute six number of Integers. Only "301", "103" is legal, while "130", "310", "013", "031" is illegal. The biggest one of odd Integer is "301".

Input

There are multiple test cases. Please process till EOF.

Each case starts with a line containing an integer N ( 1 <= N <= 100 ).

The second line contains N Digits which indicate the digit $a_1, a_2, a_3, \cdots, a_n. ( 0 \leq a_i \leq 9)$.

Output

The output of each test case of a line. If you can constitute an Integer which is satisfied above conditions, please output the biggest one. Otherwise, output "-1" instead.

Sample Input

3
0 1 3
3
5 4 2
3
2 4 6

Sample Output

301
425
-1

Source

field=problem&key=BestCoder+Round+%2311+%28Div.+2%29&source=1&searchmode=source">BestCoder Round #11 (Div. 2)

Recommend

heyang   |   We have carefully selected several similar problems for you:  5057 5056 

pid=5054" target="_blank">5054 5053 5052

思路:这题有点略坑~思路挺简单。可是细心才干AC,

直接将n个数排序。然后找最小的奇数移出就可以。

PS:(1)要注意n==1的情况

(2)You need to use this N Digits to constitute an Integer.

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <string>
#include <cmath>
const int INF=99999999;
#include <algorithm>
using namespace std;

int a[110];
bool cmp(int a,int b)
{
  return a>b;
}
int main()
{
    int n;
    while(cin>>n)
    {
      for(int i=1;i<=n;i++)
      {
        cin>>a[i];
      }
     if(n==1)
     {
       if(a[1]&1)
            cout<<a[1]<<endl;
       else
            cout<<-1<<endl;
       continue;
     }
     sort(a+1,a+1+n,cmp);

     int flag=INF;
     for(int i=n;i>=1;i--)
     {
       if(a[i]&1)
       {
        flag=i;
        break;
       }
     }
     if(flag==INF)
     {
       cout<<-1<<endl;
       continue;
     }
     if(flag==1&&a[2]==0)
     {
       cout<<-1<<endl;
       continue;
     }
     for(int i=1;i<=n;i++)
     {
       if(i!=flag)
            cout<<a[i];
     }
     cout<<a[flag]<<endl;
    }
    return 0;
}
时间: 2024-08-24 21:52:31

hdu 5055(坑)的相关文章

hdu 2837 坑题。

Calculation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1414    Accepted Submission(s): 291 Problem Description Assume that f(0) = 1 and 0^0=1. f(n) = (n%10)^f(n/10) for all n bigger than ze

hdu 5055 Bob and math problem

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5055 思路:排序然后直接取出最小的那一个奇数,注意判断n==1时... code1: <span style="font-size:18px;">#include<cstdio> #include<iostream> #include<cmath> #include<algorithm> using namespace std;

HDU 5055 Bob and math problem(构造)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5055 Problem Description Recently, Bob has been thinking about a math problem. There are N Digits, each digit is between 0 and 9. You need to use this N Digits to constitute an Integer. This Integer need

HDU 5055 Bob and math problem(结构体)

主题链接:http://acm.hdu.edu.cn/showproblem.php?pid=5055 Problem Description Recently, Bob has been thinking about a math problem. There are N Digits, each digit is between 0 and 9. You need to use this N Digits to constitute an Integer. This Integer need

HDU 5055 Bob and math problem(简单贪心)

http://acm.hdu.edu.cn/showproblem.php?pid=5055 题目大意: 给你N位数,每位数是0~9之间.你把这N位数构成一个整数. 要求: 1.必须是奇数 2.整数的前面没有0 3.找到一个最大的整数 如果满足1.2.3条件,就输出这个数,不满足就输出-1. 给个例子 3 1 0 0 这个构成的奇数是001,这个数前面有0,应该输出-1 解题思路: 对给的N个数升序排序. 然后最小的开始找,找到一个奇数,然后把它放在最左边. 然后判断这个数是否,满足要求.满足要

随手练——数独 HDU - 5547 坑!坑!坑!

题目链接:HDU-5547 http://acm.hdu.edu.cn/showproblem.php?pid=5547 解题思想:随手练-- 数独 POJ - 2676 (回溯法+DFS) HDU 的这题实在是太坑了,M 数组开成 int 就过不了,改成 char 就过了.对着别人AC的代码,一点点试,到最后才试出来,数组的问题,但是不能理解啊,什么鬼,这也错?? 然后发现题目描述里有一句:Each test case starts with an empty line followed by

hdu 5055 Bob and math problem (很简单贪心)

给N个数字(0-9),让你组成一个数. 要求:1.这个数是奇数 2.这个数没有前导0 问这个数最大是多少. 思路&解法: N个数字从大到小排序,将最小的奇数与最后一位交换,把剩下前N-1位从大到小排序.输出.(判断第一位是否为0) 代码: #include <cstdio> #include <iostream> #include <string.h> #include <cstdlib> #include <algorithm> #in

hdu 5055(模拟)

Bob and math problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1481    Accepted Submission(s): 552 Problem Description Recently, Bob has been thinking about a math problem.There are N Digi

BestCoder Round #11 (Div. 2) 前三题题解

题目链接: huangjing hdu5054 Alice and Bob 思路: 就是(x,y)在两个參考系中的表示演全然一样.那么仅仅可能在这个矩形的中点.. 题目: Alice and Bob Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 216    Accepted Submission(s): 166 Problem De