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;
}
浙公网安备 33010602011771号