把每一位数分解成好几个数,使得这一个数的阶乘和那好几个数阶乘的乘积相同。数分的越长越好,最终也就只能分成好几个素数。素数没法分。比如9分成7332, 9! = 7! * 3! * 3! * 2!
#include <bits/stdc++.h>
using namespace std;
char str[20];
vector<int> res;
int main()
{
int n;
scanf("%d",&n);
scanf(" %s",str);
int len = strlen(str);
for(int i = 0; i < len; ++i)
{
if(str[i] == '2' || str[i] == '3' || str[i] == '5' || str[i] == '7')
res.push_back(str[i]-'0');
else if(str[i] == '4')
{
res.push_back(3);
res.push_back(2);
res.push_back(2);
}
else if(str[i] == '6')
{
res.push_back(5);
res.push_back(3);
}
else if(str[i] == '8')
{
res.push_back(7);
res.push_back(2);
res.push_back(2);
res.push_back(2);
}
else if(str[i] == '9')
{
res.push_back(7);
res.push_back(3);
res.push_back(3);
res.push_back(2);
}
}
sort(res.begin(),res.end(),[](int a, int b)->bool{return a > b;});
for(int x : res)
cout << x;
cout << endl;
return 0;
}