编程题
### 问题描述 你是一名冒险家,正在寻找一个传说中的宝藏。据说这个宝藏被锁在 $n$ 个箱子里,每个箱子里都有一颗宝石。你需要找到这些宝石,并将它们放入正确的箱子里解锁宝藏。 但是,这些箱子上都有一个数字,代表它们的密码。每个宝石都只能放在密码与它的编号不同的箱子里。也就是说,宝石 $i$ 只能放在密码不等于 $i$ 的箱子里。 现在,请你计算有多少种合法的方案,可以将这 $n$ 颗宝石放入这 $n$ 个箱子中,使得每个箱子里都有一颗宝石,并且宝石的放置顺序符合解锁宝藏的要求。 ### 输入格式 第一行一个整数 $n$($1\leq n \leq 2\times 10^3$),表示宝石和箱子的数量。 第二行 $n$ 个整数 $a_1,a_2,\cdots,a_n$($1\leq a_i \leq n$),表示每个箱子对应的密码。 ### 输出格式 输出一个整数,表示合法的方案数。由于答案可能很大,你需要对 $10^9+7$ 取模。 ### 样例输入 ``` 3 2 1 3 ``` ### 样例输出 ``` 2 ``` ### 数据范围 $1 \leq n \leq 2\times 10^3$,$1 \leq a_i \leq n$。 ### 说明 在这个问题中,你代表冒险家,而箱子上的数字则代表它们的密码。
查看答案
赣ICP备20007335号-2