感觉还是蛮有趣的一道题的,我刚开始还准备用递归来写,但是觉的太麻烦,看了下别人的,才发现原来这么简单。。。。。。。。
在仔细想一想,确实就是这么简单
#include <iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int a[105];
char str[18];
int main()
{
int n;
while(scanf("%d%s",&n,str)!=EOF)
{
memset(a,0,sizeof(a));
int i,cnt=0;
for(i=0;i<n;i++)
{
int flag=str[i]-'0';
if(flag==2||flag==5||flag==7||flag==3)
a[cnt++]=flag;
if(flag==4)
{
a[cnt++]=2;
a[cnt++]=2;
a[cnt++]=3;
}
if(flag==6)
{
a[cnt++]=5;
a[cnt++]=3;
}
if(flag==8)
{
a[cnt++]=2;
a[cnt++]=2;
a[cnt++]=2;
a[cnt++]=7;
}
if(flag==9)
{
a[cnt++]=2;
a[cnt++]=3;
a[cnt++]=3;
a[cnt++]=7;
}
}
sort(a,a+cnt);
for(i=cnt-1;i>=0;i--)
printf("%d",a[i]);
printf("\n");
}
}