# 2019 CCF CSP-S C++ 初赛题目笔记

## 一，单项选择

### 6. 1,1,8,8的所有排列组合
排列 $ 1, 1, 8, 8 $ 的问题涉及到 **重复元素的排列**，在这种情况下，排列的原理如下：

#### 1. 基础排列公式：
如果没有重复元素，4 个元素的排列方式可以通过 **阶乘** 公式计算，即：
$$
n! = 4! = 4 \times 3 \times 2 \times 1 = 24
$$
这意味着，4 个不相同的元素可以有 24 种不同的排列方式。

#### 2. 处理重复元素：
但在这里，数字 $1$ 重复了 2 次，数字 $8$ 也重复了 2 次。如果我们按照普通排列来计算，每次将这些数字视为不同的元素，实际上会重复计数。因此，需要除以重复元素的排列数来消除这种重复。

- 对于两个 $1$，它们内部有 $2! = 2 \times 1 = 2$ 种排列方式，我们将它们视为一样的，所以需要除以这个重复数。
- 同理，对于两个 $8$，也有 $2!$ 种内部排列。

于是，最终排列总数公式为：
$$
\frac{n!}{k_1! \times k_2!}
$$
其中，$ n! $ 是总元素数的全排列，$ k_1! $ 和 $ k_2! $ 是分别消除两个 $1$ 和两个 $8$ 的重复排列。

#### 3. 应用在问题中：
在这个问题中，$ n = 4 $，而 $ k_1 = 2 $（两个 $1$）和 $ k_2 = 2 $（两个 $8$）。所以计算如下：
$$
\frac{4!}{2! \times 2!} = \frac{24}{2 \times 2} = \frac{24}{4} = 6
$$
因此，总共有 6 种不同的排列方式。

#### 结论：
通过这种方法，处理包含重复元素的排列问题，我们成功消除了重复计算，得到了正确的排列总数。

