CF542C Idempotent functions

题目描述

前不久,Leonid 了解到了幂等函数。定义在集合 $\\{1,2,\dots,n\\}$ 上的幂等函数 $g$ 满足如下条件:对于任意 $x$,恒有 $g(g(x)) = g(x)$。 我们用 $f^{(k)}(x)$ 表示函数 $f$ 对 $x$ 连续应用 $k$ 次后的结果。更正式地,$f^{(1)}(x) = f(x)$,对于每个 $k > 1$,有 $f^{(k)}(x) = f(f^{(k-1)}(x))$。 现给定一个函数 $f$,请你求出最小的正整数 $k$,使得 $f^{(k)}(x)$ 成为幂等函数。

输入格式

第一行包含一个整数 $n$($1 \leq n \leq 200$),表示函数 $f$ 的定义域大小。 第二行包含 $f(1), f(2), \dots, f(n)$(对于每个 $1 \leq i \leq n$,有 $1 \leq f(i) \leq n$),即函数 $f$ 的各个值。

输出格式

输出最小的正整数 $k$,使得 $f^{(k)}(x)$ 是幂等函数。

说明/提示

在第一个样例中,函数 $f(x) = f^{(1)}(x)$ 已经是幂等函数,因为 $f(f(1)) = f(1) = 1$, $f(f(2)) = f(2) = 2$, $f(f(3)) = f(3) = 2$, $f(f(4)) = f(4) = 4$。 在第二个样例中: - $f(x) = f^{(1)}(x)$ 不是幂等函数,因为 $f(f(1)) = 3$ 但 $f(1) = 2$; - $f(x) = f^{(2)}(x)$ 是幂等函数,因为对于任意 $x$ 都有 $f^{(2)}(x) = 3$,故 $f^{(2)}(f^{(2)}(x)) = 3$ 也成立。 在第三个样例中: - $f(x) = f^{(1)}(x)$ 不是幂等函数,因为 $f(f(1)) = 3$ 但 $f(1) = 2$; - $f(f(x)) = f^{(2)}(x)$ 也不是幂等函数,因为 $f^{(2)}(f^{(2)}(1)) = 2$ 但 $f^{(2)}(1) = 3$; - $f(f(f(x))) = f^{(3)}(x)$ 是幂等函数,因为它是单位函数:对于任意 $x$,$f^{(3)}(x) = x$,因此 $f^{(3)}(f^{(3)}(x)) = f^{(3)}(x)$ 也成立。 由 ChatGPT 5 翻译