CF1863G Swaps
题目描述
给定一个整数数组 $a_1, a_2, \dots, a_n$($1 \le a_i \le n$)。你可以进行若干次(也可以不进行)如下操作:
- 任意选择一个 $i$,执行交换操作 $(a_i, a_{a_i})$。
你最多可以得到多少种不同的数组?请输出答案对 $10^9 + 7$ 取模后的结果。
输入格式
第一行包含一个整数 $n$($1 \le n \le 10^6$)。
第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le n$)。
输出格式
输出可以通过上述操作得到的不同数组的个数,对 $10^9 + 7$ 取模。
说明/提示
在第一个样例中,初始数组为 $[1, 1, 2]$。如果对 $i = 3$ 执行操作,则交换 $a_3$ 和 $a_2$,得到 $[1, 2, 1]$。可以证明没有其他可达的数组。
在第二个样例中,四种可达的数组分别为 $[2, 1, 4, 3]$,$[1, 2, 4, 3]$,$[1, 2, 3, 4]$,$[2, 1, 3, 4]$。可以证明没有其他可达的数组。
由 ChatGPT 4.1 翻译