题目九、位数阶乘
X是一个n位数的正整数
现在定义 , 比如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
共一行,表示符合上述条件的最大值。
输入示例
2
44
4
1234
5
12345
6
888888
12
001234567890
输出示例
332222
33222
533222
77777722222222222222
77755333332222222
解题思路:
这一题乍一看是数论的内容,我去感觉脑子要炸裂了。=。=
其实这道题也让我想了很久,但是想通之后发现还是一道找规律的问题。我把我思路的结果写出来大概就能理解这题的思路了。
9! = 9*8*7! = 7!*3!*3!*2!
8! = 8*7! = 7!*2!*2!*2!
6! = 6*5!=3!*5!
4!=2!*2!*3!
2,3,5,7不能分解原样输出,最后的结果在排序一次就好。
代码:
#include <cstdio> #include <algorithm> #define MAX 10000 using namespace std; char ans[MAX] = {'