涉及知识点:
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\n");
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;
}