poj 2369

置换。

代码:

#include<iostream>
#include<fstream>

using namespace std;

int a[1001];
int n;
int v[1001];

int gcd(long long s,long long t){
	if(t==0) return s;
	return gcd(t,s%t);
}


void read(){
//	ifstream cin("in.txt");
	int i,j,k,s;
	cin>>n;
	long long ans=1;
	for(i=1;i<=n;i++)
		cin>>a[i];
	for(i=1;i<=n;i++)
		if(v[i]==0&&a[i]!=i)
		{
			v[a[i]]=1;
			j=a[i];
			k=2;
			while(a[j]!=i)
			{
				k++;
				v[a[j]]=1;
				j=a[j];
			}
			v[i]=1;
			s=gcd(ans,k);
			ans=ans*(k/s);
		}
	cout<<ans<<endl;
}






int main(){
	read();
	return 0;
}

posted on 2011-04-17 19:03  宇宙吾心  阅读(297)  评论(0)    收藏  举报

导航