题目描述
HXY得到了一些卡片,这些卡片上标有数字 0或 5 。现在她可以选择其中一些卡片排成一列,使得排出的一列数字组成的数最大,且满足被 90 整除这个条件。同时这个数不能含有前导 0 ,即 0 不能作为这串数的首位。如果不能排出这样的数,输出-1。
输入格式
第一行,卡片的个数 n 。
第二行,分别给出了这 n 个数(只能为数字 5 或 0 )。
输出格式
仅一行,如果可以排出,则输出这个数。否则输出-1。
输入输出样例
输入 #1
4
5 0 5 0
输出 #1
0
输入 #2
11
5 5 5 5 5 5 5 5 0 5 5
输出 #2
5555555550
数据范围:
对于 30% 的数据,n≤10 ;
对于 20% 的数据,仅含数字 5 ;
对于 100% 的数据,n≤1000 。
答案
#include<stdio.h>
#include<string.h>
int cnt1,cnt2;
int main(){
int n;
int a[1005];
int i;
scanf("%d",&n);
for (i=0;i<n;i++){
scanf("%d",&a[i]);
if (a[i]==0){
cnt1++;
}
else{
cnt2++;
}
}
while (1){
if (cnt1==0){
printf("-1");
break;
}
if (cnt2<9){
printf("0");
break;
}
if (cnt2%9==0){
for (i=0;i<cnt2;i++){
printf("5");
}
for (i=0;i<cnt1;i++){
printf("0");
}
break;
}
else {
--cnt2;
}
}
return 0;
}