每日一题[3503]洗牌

2024年北京大学强基计划数学试题(回忆版)#3

1,2,,8 的排列中没有出现连续的两个数(12,23,,78)的个数为(       )

A.14325

B.16687

C.17429

D.以上答案都不对

答案    B.

解析    这个题有很强的背景.

新的问题    取 n 张扑克牌,分别为 1,2,,n,经过洗牌(即排列)后如果原来的连张(如 12,23,)都被破坏了,那么称之为好的洗牌,求好的洗牌数.

解法一     设 n 张牌的好的洗牌数为 an.我们把洗好的牌中的连张合并成堆,最后 n 张牌变成若干堆,如 1,2,3,4,5 会变成 1 堆,5,4,1,3,2 会变成 5 堆,而 2,3,1,4,5 会变成 3 堆.这样好的洗牌数就是堆数为 n 堆的洗牌数,而堆数为 k 的洗牌数为 (n1k1)ak,这样就有nk=1(n1k1)ak=n!,

于是依次计算可得 [1]n12345678an1131153309211916687

解法二     通过解法一的探索可以得到对于 n 张牌的好的洗牌,去掉第 n 张牌,那么堆数或者为 n1,或者为 n2,因此可以得到递推公式an=(n1)an1+(n2)an2,

这样可以更快的完成递推计算.

容斥原理    考虑有 k 个二连张的排列数为 (n1k)(nk)!,根据容斥原理,有an=nk=0(1)k(n1k)(nk)!,

于是 [2]a8=8!(71)7!+(72)6!(73)5!+(74)4!(75)3!+(76)2!(77)1!=4032035280+151204200+840126+141=16687.


[1] 这些数恰好是相邻两个错排数之和.

[2] 对于选择题可以考虑尾数(但无法排除选项 D),这样容斥原理的做法可以很方便的处理 n 比较大的情形.

此条目发表在每日一题分类目录,贴了标签。将固定链接加入收藏夹。

发表回复