X是一个n位数的正整数 (x=a0a1...an−1)
现在定义 F(x)=∏i=0n−1(ai!) , 比如F(135)=1!*3!*5!=720.
我们给定一个n位数的整数X(至少有一位数大于1,X中可能有前导0),
然后我们去找一个正整数(s)符合以下条件:
1.这个数尽可能大,
2.这个数中不能含有数字0或1。
3.F(s)=F(x)
Input
每个测试数据输入共2行。 第一行给出一个n,表示x为中数字的个数。(1<=n<=15) 第二行给出n位数的正整数X(X中至少有一位数大于1)
Output
共一行,表示符合上述条件的最大值。
Input示例
4 1234
Output示例
33222 思路: 将十进制数字分解:9 -> 7332
8 -> 7222
7 -> 7
6 -> 53
5 -> 5
4 -> 322
3 -> 3
2 -> 2
#include <iostream> #include <cstring> using namespace std; typedef long long int ll; int main() { int n; ll input; int num[10]; memset(num, 0, sizeof(num)); cin >> n; cin >> input; for (int i = 0; i < n; i++) { int a = input % 10; input /= 10; if (a == 2 || a == 3 || a == 5 || a == 7) { num[a]++; } else if (a == 9) { num[7]++; num[3] += 2; num[2]++; } else if (a == 8) { num[7]++; num[2] += 3; } else if (a == 6) { num[5]++; num[3]++; } else if (a == 4) { num[3]++; num[2] += 2; } } for (int i = 9; i > 1; i--) { while (num[i] > 0) { cout << i; num[i]--; } } cout << endl; return 0; }