#P2192. 遗忘的密码

    ID: 1216 传统题 1000ms 256MiB 尝试: 25 已通过: 1 难度: 8 上传者: 标签>图论组合数学树论树哈希数据结构CF2400树形DP计数DP

遗忘的密码

题目描述

D 博士最近设计了一款新的密码锁,密码锁的工作原理如下:

密码 AA 是一个 nn 个数的序列,每个元素都是 1n1\sim n 之间的一个整数,刚刚安装时,密码锁内部会随机出一个 1n1\sim n 的排列 BB,然后根据 A,BA,B 产生一组对比密码 CC

Ci=B1(ABi)C_i=B^{-1}(A_{B_i})

其中 B1(x)B^{-1}(x) 表示元素 xx 在排列 BB 中的位置。例如,若 B={3,1,2}B=\{3,1,2\},则 B1(3)=1B^{-1}(3)=1B1(1)=2B^{-1}(1)=2

这种密码锁有非常优异的性能,比如说就算有人通过黑客手段得到 CC,他们也不可能轻易地得到正确的 AA 输入,而如果没有 AA,仅仅得到了 CC 也是没有用的。出于此,Y 老板向 D 博士订购了一套这样的密码锁,这时一种 D 博士没有考虑到的特殊情况发生了:

Y 老板是一个非常健忘的人,有一天他竟然忘记了自己密码锁的密码!

D 博士立刻取出了对应码 CC,但是因为不知道 BB,他仍然无法找出 AA 的具体值,于是他把这个艰巨的任务交给你,他的助手。你的任务是,统计所有可能的 AA 序列总数。

输入格式

第一行一个整数 nn

第二行 nn 个整数,表示 C1,C2,,CnC_1,C_2,\dots,C_n

输出格式

一个整数表示对于所有可能作为密码的 AA 序列的个数。

样例输入 #1

5
1 2 3 4 5

样例输出 #1

1

样例输入 #2

5
2 2 2 2 2

样例输出 #2

5

样例输入 #3

5
3 2 5 2 2

样例输出 #3

120

数据规模与约定

本题共有 1010 组输入数据,以下给出各组输入数据的 nn 值:

Case 1 2 3 4 5 6 7 8 9 10
nn 3 6 9 12 15 18 21 24 27 30