描述
题解
能被9整除的数,各数位之和一定为9的倍数;
能被90整除的数,一定是在满足能被9整除的数的基础上加上一个0(不能是前导0)。
所以,这里需要判断是否有0,还需要判断5的个数,如果存在这个最大的数,那么最后输出的数,前缀一定是连着n个5(n需要是9的倍数,n尽量大),后缀是尽可能多的0(最低一个)。AC……
代码
#include <iostream>
typedef long long ll;
using namespace std;
int main(int argc, const char * argv[])
{
int n;
cin >> n;
int K, num_0 = 0, num_5 = 0;
for (int i = 0; i < n; i++)
{
cin >> K;
if (K)
{
num_5++;
}
else
{
num_0++;
}
}
// 判断是否存在0
bool flag = num_0 > 0 ? false : true;
if (flag)
{
cout << "-1\n";
}
else
{
// 判断5的个数是否可以凑成9的倍数
bool tag = num_5 >= 9 ? false : true;
if (tag)
{
cout << "0\n";
}
else
{
int times = num_5 / 9 * 9; // ex:11 / 9 * 9 = 9
for (int i = 0; i < times; i++)
{
cout << "5";
}
for (int i = 0; i < num_0; i++)
{
cout << "0";
}
cout << '\n';
}
}
return 0;
}