这题说时候,扫了一眼题解,然后自己又做了一遍,感觉没有那么难。但比赛的时候就是做不出来。这次比赛,虽然说爆零了,但我没有感觉多么失落,相反我觉得这是一件好事情。我看到一些队员进步很大,自己得努力了,要不然最后的成绩一定会特别惨。
这道题题意很好理解,但要特判一下0;
我当时想的居然是先查看是否为素数,a[i]记录的是i的个数,这样的话就麻烦了,也没有发现0这个特殊的情况。
#include<bits/stdc++.h>
using namespace std;
const int maxn=200;
int t,q,a[maxn],k;
bool work(int x)
{
bool flag=false;
while(x>=10)
{
flag=false;
for(int i=9;i>=2;i--)
{
if(x%i==0)
{
flag=true;
a[++k]=i;
// cout<<x<<endl;
x/=i;
// cout<<x<<endl;
break;
}
}
if(!flag) return false;
}
a[++k]=x;
return true;
}
int main()
{
scanf("%d",&t);
while(t--)
{
memset(a,0,sizeof(a));
k=0;
scanf("%d",&q);
if(q==0)
{
cout<<"10"<<endl;
continue;
}
if(!work(q)) cout<<-1<<endl;
else{
sort(a+1,a+1+k);
for(int i=1;i<=k;i++)
cout<<a[i];
cout<<endl;
}
}
return 0;
}