#P1345. 课程ZC.置换的"循环节"

课程ZC.置换的"循环节"

题目描述
N 个数的全排列有 N! 种,比如 5 个数的排列有 5!=120 种。但是,前面的置换( 3 4 5 2 1 )我们看到,置换6次后,数列就还原了。
显然,置换( 3 4 5 2 1 )只能得到6个不同的排列,或称这个置换的周期是6。
当N比较大时,周期有可能回很大!
为了研究这个问题,数学家先简化问题:研究单独一个“数”的周期!
例如置换( 3 4 5 2 1 )的规律:

  1. 原始数列 1 2 3 4 5
  2. 第1次置换后 5 4 1 2 3
  3. 第2次置换后 3 2 5 4 1
  4. 第3次置换后 1 4 3 2 5
  5. 第4次置换后 5 2 1 4 3
  6. 第5次置换后 3 4 5 2 1
  7. 第6次置换后 1 2 3 4 5 …
    因此:
  • 数字1的位置变化为:1—3—5—1—3—5—1…, 显然数字1的周期就是3。
  • 数字2的位置变化为:2—4—2—4—2—4…, 显然数字2的周期就是2。
  • 数字3的位置变化为:3—5—1—3—5—1—3…, 显然数字3的周期就是3。
  • 数字4的位置变化为:4—2—4—2—4—2…, 显然数字4的周期就是2。

    结论:各个数的周期分别是:3 2 3 2 3。

输入格式
第一行1个正整数:N,范围在[1,100],表示字符串长度。
第二行:有N个整数,为1到N的一个全排列,表示一个置换。

输出格式
一行,N 个数。第 i 个数表示第 1 个数经过多少次又变化回来。

样例

5
5 3 2 1 4
3 2 2 3 3