传送门:
C. Drazil and Factorial
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
Drazil is playing a math game with Varda.
Let’s definefor positive integerxas a product of factorials of its digits. For example,.
First, they choose a decimal numberaconsisting ofndigits that contains at least one digit larger than1. This number may possibly start with leading zeroes. Then they should find maximum positive numberxsatisfying following two conditions:
1.xdoesn’t contain neither digit0nor digit1.
2..
Help friends find such number.
Input
The first line contains an integern(1≤n≤15) — the number of digits ina.
The second line containsndigits ofa. There is at least one digit inathat is larger than1. Numberamay possibly contain leading zeroes.
Output
Output a maximum possible integer satisfying the conditions above. There should be no zeroes and ones in this number decimal representation.
Sample test(s)
input
41234
output
33222
input
3555
output
555
Note
In the first case,
题目问你求最大的a
这样考虑 4!=3!*2!*2!
6!=5!*3!
8!=7!*2!*2!*2!
9!=7!*3!*3!*2!
于是得到了f(4)=f(322)
AC代码
#include<iostream>#include<string>#include<algorithm>#include<cstdlib>#include<cstdio>#include<set>#include<map>#include<vector>#include<cstring>#include<stack>#include<cmath>#include<queue>#define INF 0x0f0f0f0fusing namespace std;int main(){int i,j,k,l,m,n,temp;int a[10];memset(a,0,sizeof(a));scanf("%d",&n);for(i=0;i<n;i++){scanf("%1d",&temp);switch(temp){case 2:a[2]++;break;case 3:a[3]++;break;case 4:a[3]++;a[2]+=2;break;case 5:a[5]++;break;case 6:a[3]++;a[5]++;break;case 7:a[7]++;break;case 8:a[2]+=3;a[7]++;break;case 9:a[2]++;a[3]+=2;a[7]++;break;}}for(i=9;i>=2;i–){for(j=0;j<a[i];j++){printf("%d",i);}}printf("\n");}
,生活若剥去了理想、梦想、幻想,那生命便只是一堆空架子