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 条件を満たす順列が存在しないこともあります。