涉及知识点:
solution:
- (首先,能被3整除的数,每一位相加一定也能被3整除!)
- (312 = 3 + 1 + 2 = 6,6能被3整除)
- (其次,能被2整除的数,末尾数字一定是偶数!)
- $即2,4,6,8 $
- (根据以上两种性质,不难构造出符合条件的字符串:)
- (卡片之和要求是3的倍数,且卡片中存在至少一张偶数)
- (符合条件的基础上,我们要排个序,并且把最小的偶数记录下来)
- (要满足数字最大,应该从9到1输出,最后输出最小的偶数即可)
std:
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
int n,x,minn = 9,sum = 0;
map<int , int> mp;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&x);
sum += x;
if(x%2 == 0){
minn = min(minn ,x);
}
mp[x]++;
}
if(sum%3 != 0 || minn == 9){
printf("-1
");
return 0;
}
mp[minn]--;
for(int i=9;i>=1;i--){
for(int j=1;j<=mp[i];j++){
printf("%d",i);
}
}
printf("%d",minn);
return 0;
}