P2192 HXY玩卡片
题目描述
HXY得到了一些卡片,这些卡片上标有数字 000 或 555 。现在她可以选择其中一些卡片排成一列,使得排出的一列数字组成的数最大,且满足被 909090 整除这个条件。同时,这个数必须为合法的某个非负整数,即不能含有前导 000 ,即 000 不能作为这串数的首位。但是特殊地,整数 000 满足条件。如果不能排出这样的数,输出“−1-1−1”。
输入格式
第一行,卡片的个数 nnn 。
第二行,分别给出了这 nnn 个数(只能为数字 555 或 000 )。
输出格式
仅一行,如果可以排出,则输出这个数。否则输出-1
。
输入输出样例
输入 #1
4
5 0 5 0
输出 #1
0
输入 #2
11
5 5 5 5 5 5 5 5 0 5 5
输出 #2
5555555550
输入 #3
2
5 5
输出 #3
-1
说明/提示
数据范围:
对于 30%30%30% 的数据,n≤10n\le 10n≤10 ;
对于 20%20%20% 的数据,仅含数字 555 ;
对于 100%100%100% 的数据,n≤1000n\le 1000n≤1000 。
#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
int main(){
int n,f,w=0,l=0;
cin>>n;
for(int i=0;i<n;i++){
cin>>f;
if(f==0) l++;//记录0的个数
else w++;//记录5的个数
}
//只要有0 即使不符合 只输出0
//若没有0,不符合 就输出-1
if(l==0) {
cout<<"-1";
return 0;
}
if(w<9){
cout<<"0";
return 0;
}
//5的个数只要是9的倍数 即可整除
w=w-(w%9);
//前面输出5
for(int i=0;i<w;i++){
cout<<"5";
}
//后面输出0a
for(int i=0;i<l;i++){
cout<<"0";
}
return 0;
}