Pagini recente » Cod sursa (job #1994385) | Cod sursa (job #2785103) | Cod sursa (job #870018) | Cod sursa (job #2862972) | Cod sursa (job #473124)
Cod sursa(job #473124)
#include <iostream>
#include <stdio.h>
using namespace std;
FILE *fin=fopen("perm2.in","r"),*fout=fopen("perm2.out","w");
int n,p[21000],i,c,s[21000],sc,inc,l,t[21000],rez;
int cmmmc(int a, int b) {
int ca=a,cb=b;
while (a>0&&b>0) {
if (a>b) a%=b;
else b%=a;
}
if (b>a) a=b;
return (ca/a*cb);
}
int main()
{
fscanf(fin,"%i",&n);
for(i=1;i<=n;i++) {
fscanf(fin,"%i",&c);
p[i]=c;
}
sc=1; rez=1;
for(i=1;i<=n;i++) {
if (t[i]==0) {
l=1; sc=1; s[1]=i; inc=i; c=p[i];
while (inc!=c) {
sc++;
l++;
s[sc]=c;
c=p[c];
}
for(int j=1;j<=sc;j++) {
t[s[j]]=l;
}
rez=cmmmc(rez,l);
}
}
fprintf(fout,"%i \n",rez);
fclose(fout);
return 0;
}