Pagini recente » Cod sursa (job #2473713) | Cod sursa (job #2172976) | Cod sursa (job #1662600) | Cod sursa (job #898025) | Cod sursa (job #2163056)
#include <cstdio>
#include <bitset>
using namespace std;
int n;
int f[100005];
bitset <100005>viz;
long long cmmdc(long long a, long long b)
{
while(b)
{
int r=a%b;
a=b;
b=r;
}
return a;
}
long long cmmmc(long long a, long long b)
{
long long d=a/cmmdc(a, b);
return d*b;
}
int main()
{
freopen("permutari2.in", "r", stdin);
freopen("permutari2.out", "w", stdout);
scanf("%d", &n);
for(int i=1; i<=n; i++)
{
scanf("%d", &f[i]);
}
long long cm=1;
for(int i=1; i<=n; i++)
{
if(viz[i] == 0)
{
int aux=i;
long long nr=0;
while(viz[aux] != 1)
{
viz[aux]=1;
aux=f[aux];
nr++;
}
cm=cmmmc(cm, nr);
}
}
printf("%lld", cm-1);
return 0;
}