hihoCoder太阁最新面经算法竞赛6 register

Ended

Participants:104

Verdict:Accepted
Score:100 / 100
Submitted:2016-06-28 14:18:50

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#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;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX