AT_cpsco2019_s3_f Flexible Permutation
题目描述
给定一个正整数 $N$。
共有 $N!$ 种不同的方式可以排列 $1, 2, \ldots, N$ 组成一个序列 $P_1, P_2, \ldots, P_N$。您需要编写一个程序,计算出满足以下条件的排列个数,并将结果对 $10^9 + 7$ 取模后输出:
- 恰好有 $A$ 个位置 $i$ 满足 $P_i > i$;
- 恰好有 $B$ 个位置 $i$ 满足 $P_i < i$;
- 恰好有 $N - A - B$ 个位置 $i$ 满足 $P_i = i$。
输入格式
输入格式为一行,包含三个整数:
> $N$ $A$ $B$
输出格式
输出满足以上条件的排列个数对 $10^9 + 7$ 取模的结果。
## 数据范围
- $1 \le N \le 300$
- $0 \le A, B \le N$
- $A + B \le N$
### 部分分数
- 如果输入满足 $N \leq 15$,则获得 $300$ 分。
### 样例解释
在样例 1 中,满足条件的排列有 $(1, 3, 2)$, $(3, 2, 1)$, $(2, 1, 3)$,共 $3$ 个。
在样例 3 中,可能不存在满足条件的排列。
**本翻译由 AI 自动生成**
说明/提示
### 制約
- $ 1\ \le\ N\ \le\ 300 $
- $ 0\ \le\ A,\ B\ \le\ N $
- $ A\ +\ B\ \le\ N $
- 与えられる入力はすべて整数です。
### 部分点
この問題には部分点が設定されています。
- $ N\ \leq\ 15 $ を満たす入力に正解すると、$ 300 $ 点が与えられます。
### Sample Explanation 1
$ (1,\ 3,\ 2),\ (3,\ 2,\ 1),\ (2,\ 1,\ 3) $ の $ 3 $ 個が条件を満たします。
### Sample Explanation 3
条件を満たす順列が存在しないこともあります。