今天的每日一题很不错,我不会,这样有可以学到新知识了,hhh
解题思路:
- 偶数的话很好判断,只要最后一位是偶数即可
- 对于3,这里有一个知识点,如果所有的数相加最后的值是3的倍数,那么他的值也是三的倍数(证明的话可以自己查一下)
- 然后我们剩余的其他数字,找出一位最小的偶数排在最后,然后剩下的从大到小排即可
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 100010;
int a[N];
int main(){
int n;
scanf("%d",&n);
int mi = 10;
int res = 0;
for (int i = 0; i < n; i ++){
scanf("%d",&a[i]);
if (a[i] % 2 == 0){
mi = min(a[i],mi);
}
res += a[i];
}
sort (a, a + n);
int k = 1;
if (res % 3 != 0 || mi == 10){
puts("-1");
return 0;
}
else{
for (int i = n - 1; i >= 0; i--){
if (k && a[i] == mi){
k = 0;
continue;
}
else{
printf("%d",a[i]);
}
}
}
printf("%d",mi);
puts("");
return 0;
}