#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; }