bzoj#P2192. 遗忘的密码(数据有误)

遗忘的密码(数据有误)

题目描述

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

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

Ci=BABI1C_i=B_{A_{B_I}}^{-1}

其中 Bi1B_{i}^{-1} 表示元素 iiBB 中的位置,比如说:B={3,1,2}B=\{3,1,2\},那么有 B31=1,B11=2B_3^{-1}=1,B_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