Topics Link: http://acm.hdu.edu.cn/showproblem.php?pid=5055
Problem descriptionrecently, Bob had been thinking about a math problem.
There is 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 is an odd Integer.
- 2. There is no leading zero.
- 3. Find the biggest one which is satisfied 1, 2.
Example:
There is three digits:0, 1, 3. It can constitute six number of integers. Only "301", "103" are legal, while "*", "310", "013", "031" is illegal. The biggest one of odd Integer is "301".
Inputthere is multiple test cases. Please process till EOF.
Each case is 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) $.
Outputthe output of each test case of a line. If you can constitute an Integer which are satisfied above conditions, please output the biggest one. Otherwise, Output "-1" instead.
Sample Input
30 1 335 4 232 4 6
Sample Output
301425-1
Sourcebestcoder Round #11 (Div. 2)
Official:
watermark/2/text/ahr0cdovl2jsb2cuy3nkbi5uzxqvdtaxmjg2mda2mw==/font/5a6l5l2t/fontsize/400/fill/i0jbqkfcma==/ Dissolve/70/gravity/southeast ">
The code is as follows:
#include <cstdio> #include <cstring> #include <algorithm>using namespace Std;int main () {int n; int a[117]; while (~SCANF ("%d", &n)) {int Minn = 10; int flag = 0; int tt = 0; for (int i = 0; i < n; i++) {scanf ("%d", &a[i]); if (a[i]&1) {flag = 1; if (A[i] < MINN) {minn = a[i]; tt = i; }}} A[tt] = 10; Sort (a,a+n); if (!flag) {printf (" -1\n"); Continue } flag = 0; for (int i = n-2; I >= 0; i--) {if (a[i]==0 &&!flag) continue; flag = 1; printf ("%d", a[i]); } if (flag | | n==1) printf ("%d\n", Minn); else printf (" -1\n"); } return 0;}
Copyright notice: This article Bo Master original article. Blog, not reproduced without consent.
HDU 5055 Bob and math problem (struct)