从9到2分别记录n能被几个i整除,最后若n不为1,则必然不存在,存在则从2到9输出对应个数即可,注意对0和1进行一下特殊处理。
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
int main()
{
int T;
cin>>T;
while(T--){
int n,size=0,fac[10]={0};
scanf("%d",&n);
if(n==1) {cout<<1<<endl;continue;}
if(!n) {cout<<0<<endl;continue;}
for(int i=9;i>1;i--){
while(n%i==0){
fac[i]++;
n/=i;
}
}
if(n!=1) printf("-1\n");
else{
for(int i=2;i<=9;i++)
for(int j=1;j<=fac[i];j++) printf("%d",i);
printf("\n");
}
}
return 0;
}