hdu 5055(模拟)
2016-07-07 11:12
232 查看
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
[align=left]Problem Description[/align]
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".
[align=left]Input[/align]
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 a1,a2,a3,⋯,an.(0≤ai≤9).
[align=left]Output[/align]
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.
[align=left]Sample Input[/align]
3
0 1 3
3
5 4 2
3
2 4 6
[align=left]Sample Output[/align]
301
425
-1
[align=left]Source[/align]
BestCoder Round #11 (Div. 2)
n个数字组成一个数,问能够组成的最大的奇数是多少?不能有前导0
直接模拟:1,如果全是偶数直接输出-1
2,从大到小排序,最低位为奇数直接输出,最低位为偶数的话往前挪,找到第一个奇数,注意一下前导0的情况即可。
#include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #include <map> using namespace std; int cmp(int a,int b) { return a>b; } int main() { int n,a[105]; char c[100]; while(scanf("%d",&n)!=EOF) { bool flag = false; for(int i=1; i<=n; i++) { scanf("%d",&a[i]); if(a[i]%2==1) flag = true; } if(!flag) printf("-1\n"); else { int res[105]; sort(a+1,a+n+1,cmp); if(a %2==1) { for(int i=1; i<=n; i++) { res[i] = a[i]; } } else { int t = n; for(int i=n; i>=1; i--) { if(a[i]%2==1) { t = a[i]; a[i] = -1; break; } } int cnt=1; for(int i=1; i<=n; i++) { if(a[i]==-1) continue; res[cnt++] = a[i]; } res[cnt] = t; } if(res[1]==0) printf("-1\n"); else { for(int i=1; i<=n; i++) { printf("%d",res[i]); } printf("\n"); } } } return 0; }
相关文章推荐
- 【转载】【cocos2dx】特效收集
- Java NIO中的读和写
- Undefined symbols for architecture i386或者armv7: “_OBJC_CLASS_$_XXX
- JS闭包学习笔记(2):循环和闭包
- C++内存模型
- Android Studio 网络调试
- Android Studio多渠道打包和代码混淆教程
- struts 2.3.20 必需的8个jar包
- 331. Verify Preorder Serialization of a Binary Tree ~~~~~
- flume监控
- Android Material Design动画(上)
- Spring内置Quartz的使用
- C++单例模式对比
- 【cqbzoj 1227】字串距离
- moravec、harris、Shi-Tomasi角点检测的简介及OpenCV代码实现
- 不使用库函数,编写函数int strcmp(char *source, char *dest) 相等返回0,不等返回-1;
- java ant编译
- JS闭包学习笔记(1):什么是闭包
- ssl 申请流程
- 在word文档中插入一个字后就会自动删除后一个字的原因及解决办法