Drazil is playing a math game with Varda.
Let's define for positive integer x as a product of factorials of its digits. For example,
.
First, they choose a decimal number a consisting of n digits that contains at least one digit larger than 1. This number may possibly start with leading zeroes. Then they should find maximum positive number x satisfying following two conditions:
1. x doesn't contain neither digit 0 nor digit 1.
2. =
.
Help friends find such number.
The first line contains an integer n (1 ≤ n ≤ 15) — the number of digits in a.
The second line contains n digits of a. There is at least one digit in a that is larger than 1. Number a may possibly contain leading zeroes.
Output a maximum possible integer satisfying the conditions above. There should be no zeroes and ones in this number decimal representation.
4 1234
33222
3 555
555
In the first case,
这道题的关键之处在于注意到阶乘是可拆分的,然后将输入数字的每一位进行拆分,将拆分结果进行排序,组成答案;
例如4的阶乘可以拆分成3 2 2;6的阶乘可以拆分成5 3;8的阶乘可以拆分为7 2 2 2;9的阶乘可以拆分为7 3 3 2;
#include<iostream>
#include<cstdlib>
#include<string>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<stack>
#include<queue>
#include<iomanip>
#include<map>
#include<functional>
#include<set>
#define pi 3.14159265358979323846
using namespace std;
bool cmp(const char &a,const char &b)
{
return a>b;
}
int main()
{
int n;
scanf("%d",&n);
char s[20];
scanf("%s",&s);
int cur=0;
char ans[100];
for(int i=0;i<n;++i)
{
if(s[i]=='2')
{
ans[cur]='2';
++cur;
}
else if(s[i]=='3')
{
ans[cur]='3';
++cur;
}
else if(s[i]=='4')
{
ans[cur++]='3';
ans[cur++]='2';
ans[cur++]='2';
}
else if(s[i]=='5')
{
ans[cur++]='5';
}
else if(s[i]=='6')
{
ans[cur++]='5';
ans[cur++]='3';
}
else if(s[i]=='7')
{
ans[cur++]='7';
}
else if(s[i]=='8')
{
ans[cur++]='7';
ans[cur++]='2';
ans[cur++]='2';
ans[cur++]='2';
}
else if(s[i]=='9')
{
ans[cur++]='7';
ans[cur++]='3';
ans[cur++]='3';
ans[cur++]='2';
}
}
//cout<<ans[0]<<" "<<ans[1]<<" "<<ans[2]<<" "<<ans[3]<<" "<<ans[4]<<endl;
sort(ans,ans+cur,cmp);
for(int i=0;i<cur;++i)
printf("%c",ans[i]);
printf("\n");
return 0;
}