题目要求这个数要能被90整除
首先我们要知道
能被3整除的数 各个位之和是3的倍数
能被9整除的数 各个位之和是9的倍数
那么 能被90整除的数一定要各个位之和是9 然后末尾位为0
那么我们统计输入的5的个数(如果没输入0 那就直接输-1 没0没法被90整除)
然后枚举各个位之和的可能情况 从小往大枚举(保证最大)
然后 打印的时候 先打印5 再打印0就好了
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<math.h>
using namespace std;
const int maxn=1e5+7;
int n,x;
int a[maxn];
int main(){
int a[100];
while(~scanf("%d",&n)){
int c0=0,c5=0;
for(int i=0;i<n;i++){
scanf("%d",&x);
if(x==0)c0++;
else c5++;
}
if(c0==0){
printf("-1\n");continue;
}
if(c5==0){
printf("0\n");continue;
}
int mx=0;
for(int i=1;i<=c5;i++){
if(i*5%9==0){
mx=i;
}
}
if(mx==0){
printf("0\n");continue;
}
int f=0;
for(int i=1;i<=mx;i++){
printf("5");f=1;
}
if(f==1)
for(int i=1;i<c0;i++){
printf("0");
}
}
return 0;
}