水题,不过还是WA了一次,看到要求最小的数,所以for循环直接从2开始,每次num除以2,3,这样,wa后想到256这个样例,输出是22222222,显然不是正确答案,所以for循环改为从9开始循环,最后再sort排序。
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<iostream>
using namespace std;
int main()
{
//freopen("in.txt","r",stdin);
int cas,num,i;
char str[200];
scanf("%d",&cas);
while(cas--)
{
scanf("%d",&num);
if(num<=9)
{
cout<<num<<endl;
continue;
}
int count=0,flag=0;
while(num/10)
{
flag=0;
for(i=9; i>=2; i--)
{
if(num%i==0)
{
num/=i;
str[count++]=i+'0';
flag=1;
break;
}
}
if(!flag) break;
}
if(num>9)
{
cout<<"-1\n";
continue;
}
if(num&&num!=1) str[count++]=num+'0';
sort(str,str+count);
str[count]='\0';
cout<<str<<endl;
}
return 0;
}