2 人解决,8 人已尝试。
2 份提交通过,共有 12 份提交。
9.5 EMB 奖励。
单点时限: 2.0 sec
内存限制: 256 MB
大家应该熟悉这样一个题目 : 一个集合 (里面的数各不相同), 比如{1,2,3,4}, 在他的排列中有 11 个排列是有 2 个升高的 . 他们是 :
1324 1423 2314 2413 3412
1243 1342 2341 2134 3124 4123
第一行列出的具有 ac<d 的排列 , 第二行列出的具有 ad 和 a>b<c<d 的排列 . 当然这就是著名的 Euler 数 .
然而这次的问题是 : 一个多重集{1,1,2,2,......,n,n}的一个排列中 , 也即是同一个数出现两次的排列中具有 k 次升高的排列数是多少 ?
比如{1,1,2,2,3,3}表示 n=3 个数 ,1 次升高的排列数为 8:
113322 133221 221331 221133 223311 233211 331122 331221.
输入两个数 n,k, 表示有 n 个数有 k 次升高的排列数 (0<=k<=n<=500);
输出排列数 . 由于该数可能很大 , 请 mod 2007. 处理到文件结尾
1 1 100 20
0 28
2 人解决,8 人已尝试。
2 份提交通过,共有 12 份提交。
9.5 EMB 奖励。