题意:
略
思路:
每个阶乘肯定是分得越多个阶乘数就越好。
分类讨论。
1. 0和1直接忽略。
2. { 2,3,5,7 }这些数的阶乘是不能再分得,原数即可。
3. 4:{3, 2, 2},6:{5, 3} 8:{7, 2, 2, 2} 9:{7, 3, 3, 2}。
code:
#include <bits/stdc++.h>
using namespace std;
int n;
string str;
int prime[] = {2, 3, 5, 7};
int t[] = {4, 6, 8, 9};
int a[][5] = {{3, 2, 2}, {5, 3}, {7, 2, 2, 2}, {7, 3, 3, 2}};
int cnt[10];
void solve() {
for(int i = 0;i < n; i++) {
if(str[i] == '1'|| str[i] == '0') continue;
bool flag = false;
for(int j = 0;j < 4; j++) {
if(str[i] == prime[j]+'0') {
cnt[prime[j]]++;
flag = true;
break;
}
}
if(flag) continue;
for(int j = 0;j < 4; j++) {
if(str[i] == t[j]+'0') {
for(int z = 0;z < 5; z++) {
cnt[a[j][z]]++;
}
break;
}
}
}
for(int i = 9; i >= 1; i--) {
for(int j = 0;j < cnt[i]; j++)
cout<<i;
}
cout<<endl;
}
int main() {
cin>>n>>str;
solve();
return 0;
}