题目要求这个数要能被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;
}