Pagini recente » Cod sursa (job #1061572) | Cod sursa (job #893639) | Cod sursa (job #2977580) | Cod sursa (job #2611083) | Cod sursa (job #733088)
Cod sursa(job #733088)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("perm2.in");
ofstream out("perm2.out");
bool folosit[22222];
int p[22222];
inline int cmmmc(int a, int b)
{
if (a==0)
return b;
if (b==0)
return a;
int c,a2=a,b2=b;
while(b)
{
c=a%b;
a=b;
b=c;
}
return a2*b2/a;
}
int main()
{
int n,i,x,k,rez=0;
in>>n;
for(i=1;i<=n;++i)
{
in>>p[i];
}
for(i=1;i<=n;++i)
{
if(folosit[i]==true)
continue;
folosit[i]==true;
x=p[i];
k=0;
while(!folosit[x])
{
++k;
folosit[x]=true;
x=p[x];
}
rez=cmmmc(rez,k);
}
out<<rez;
return 0;
}