记录编号 28722 评测结果 AAAAAAAAAA
题目名称 教官 最终得分 100
用户昵称 Gravatarkaaala 是否通过 通过
代码语言 C++ 运行时间 0.093 s
提交时间 2011-10-17 10:07:28 内存使用 0.35 MiB
显示代码纯文本
#include<iostream>  
#include<fstream>   
#include<cstdlib>  
#include<cmath>  
  
using namespace std;  
  
int n,a[10001],t[10001];   
bool f[10001];  
  
long long gcd(long long a,long long b)  
{  
    if (a<b) 
		swap(a,b);  
    if (b!=0) 
		return gcd(b,a%b);  
    return a;  
}  
  
int main()  
{  
	int i,j,k,now;
	long long ans;
    ifstream fin("officer.in");  
    ofstream fout("officer.out");  
    fin>>n;  
    for(i=1;i<=n;i++)  
        fin>>a[i];  
    for(i=1;i<=n;i++)  
		if (!f[i])  
		{  
			now=i;
			k=0;  
			do  
			{  
				now=a[now];  
				f[now]=true;  
				k++;  
			}while(now!=i);  
			j++;
			t[j]=k;  
		}  
    ans=t[1];   
    for(i=2;i<=j;i++)  
        ans=(ans/gcd(ans,t[i]))*t[i];   
    fout<<ans<<endl;   
	fin.close();
	fout.close();
    return 0;  
}