#include<cstdio>
#include<cstring>
using namespace std;
//逐个判断是否满足条件,如果一次性更改所有的话比较麻烦时间复杂度要*n
//不算很难,但网上说是置换群。
int gcd(int a,int b)
{
return !b?a:gcd(b,a%b);
}
int lcm(int a,int b)
{
return a/gcd(a,b)*b;
}
int main()
{
int n,ans=1,tmp,cnt;
int num[1005];
scanf("%d",&n);
for(int i = 1;i<=n;++i)
scanf("%d",&num[i]);
for(int i = 1;i<=n;++i)
{
cnt = 1;
tmp = num[i];
while(tmp!=i)
{
tmp = num[tmp];
cnt++;
}
ans = lcm(cnt,ans);
}
printf("%d\n",ans);
return 0;
}

京公网安备 11010502036488号