Codeforces Round #292 (Div. 2)

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,

思路:就是尽可能的将数字化简拆分,0,1舍弃,2,3,5,,7不动,4拆分成3,2和2,6拆分成5和3,8拆分成7,2,2,和2,9拆分成7,3,3和2,然后从大到小输出即可

比赛时写完才发现自己有个小bug,哎,这时已经锁了(`)

AC代码:

#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int main() {int n, num[11];char a[20];while(scanf("%d %s", &n, a) != EOF) {memset(num, 0, sizeof(num));for(int i = 0; i < n; i++) {if(a[i] != '0' || a[i] != '1') {if(a[i] == '6') {num[5]++;num[3]++;}else if(a[i] == '8') {num[2] += 3;num[7] ++;}else if(a[i] == '4') {num[2] += 2;num[3]++;}else if(a[i] == '9') {num[7]++;num[2]++;num[3]+=2;}else num[a[i] – '0']++;}}for(int i = 9; i >= 2; i–) {while(num[i]){printf("%d", i);num[i]–;}}printf("\n");}return 0;}

人生好如足球赛,看自家总是无奈,对人家总是优待,

Codeforces Round #292 (Div. 2)

相关文章:

你感兴趣的文章:

标签云: