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 的洗牌数为 (n−1k−1)⋅ak,这样就有n∑k=1(n−1k−1)⋅ak=n!,
于是依次计算可得 [1]n12345678an1131153309211916687
解法二 通过解法一的探索可以得到对于 n 张牌的好的洗牌,去掉第 n 张牌,那么堆数或者为 n−1,或者为 n−2,因此可以得到递推公式an=(n−1)an−1+(n−2)an−2,
这样可以更快的完成递推计算.
容斥原理 考虑有 k 个二连张的排列数为 (n−1k)⋅(n−k)!,根据容斥原理,有an=n∑k=0(−1)k(n−1k)⋅(n−k)!,
于是 [2]a8=8!−(71)⋅7!+(72)⋅6!−(73)⋅5!+(74)⋅4!−(75)⋅3!+(76)⋅2!−(77)⋅1!=40320−35280+15120−4200+840−126+14−1=16687.
[1] 这些数恰好是相邻两个错排数之和.
[2] 对于选择题可以考虑尾数(但无法排除选项 D),这样容斥原理的做法可以很方便的处理 n 比较大的情形.