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
解题思路: 乱搞题
#include <cmath> #include <cstdio> #include <vector> #include <iostream> #include <string> #include <algorithm> using namespace std; int arr[110]; int main() { int n, x; string s; int cnt = 0; cin >> n; cin >> s; for(int i = 0; i < n; ++i) { x = s[i] - '0'; if(x == 2) arr[cnt++] = 2; if(x == 3) arr[cnt++] = 3; if(x == 4) { arr[cnt++] = 3; arr[cnt++] = 2; arr[cnt++] = 2; } if(x == 5) arr[cnt++] = 5; if(x == 6) { arr[cnt++] = 3; arr[cnt++] = 5; } if(x == 7) arr[cnt++] = 7; if(x == 8) { arr[cnt++] = 2; arr[cnt++] = 2; arr[cnt++] = 2; arr[cnt++] = 7; } if(x == 9) { arr[cnt++] = 7; arr[cnt++] = 3; arr[cnt++] = 3; arr[cnt++] = 2; } } sort(arr, arr + cnt, greater<int>()); for(int i = 0; i < cnt; ++i) { printf("%d", arr[i]); } printf("\n"); return 0; }