Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<cstdio>#include<cctype>#include<algorithm>using namespace std;inline int read(){int x=0,f=1;char c=getchar();for(;!isdigit(c);c=getchar()) if(c=='-')f=-1;for(;isdigit(c);c=getchar()) x=x*10+c-'0';return x*f;}int gcd(int a,int b){return b==0 ? a :gcd(b,a%b);}int a[105];bool flag[105];int main(){int n=read(),ans=1;for(int i=1;i<=n;i++) a[i]=read();for(int i=1;i<=n;i++){if(flag[i]) continue;int cnt=1;for(int j=a[i];j!=i;j=a[j]) cnt++,flag[j]=1;ans=ans/gcd(ans,cnt)*cnt;}printf("%d\n",ans);return 0;}