https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1435
把每个阶乘都素因子分解 记录每个素因子 即2357共有多少
贪心考虑 肯定要保证位数最多 且高位值尽量大 所以就凑7532
using namespace std;
int main()
{
int num[20],book[20],ans[100];
int n,len,i;
char ch[20];
scanf("%d%s",&n,ch);
for(i=0;i<n;i++) num[i+1]=ch[i]-'0';
memset(book,0,sizeof(book));
for(i=1;i<=n;i++)
{
if(num[i]==2) book[2]++;
else if(num[i]==3) book[2]++,book[3]++;
else if(num[i]==4) book[2]+=3,book[3]++;
else if(num[i]==5) book[2]+=3,book[3]++,book[5]++;
else if(num[i]==6) book[2]+=4,book[3]+=2,book[5]++;
else if(num[i]==7) book[2]+=4,book[3]+=2,book[5]++,book[7]++;
else if(num[i]==8) book[2]+=7,book[3]+=2,book[5]++,book[7]++;
else if(num[i]==9) book[2]+=7,book[3]+=4,book[5]++,book[7]++;
}
len=0;
while(book[7]>0)
{
ans[++len]=7;
book[2]-=4,book[3]-=2,book[5]--,book[7]--;
}
while(book[5]>0)
{
ans[++len]=5;
book[2]-=3,book[3]--,book[5]--;
}
while(book[3]>0)
{
ans[++len]=3;
book[2]--,book[3]--;
}
while(book[2]>0)
{
ans[++len]=2;
book[2]--;
}
for(i=1;i<=len;i++) printf("%d",ans[i]);
printf("\n");
return 0;
}