Cod sursa(job #2163054)
Utilizator | Data | 12 martie 2018 16:35:49 | |
---|---|---|---|
Problema | Permutari2 | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.77 kb |
#include <iostream>
#include <fstream>
using namespace std;
long long a[100005],n,rez=1,v[100005];
long long cmmdc(long long x,long long y)
{
if(y==0)
return x;
return cmmdc(y,x%y);
}
int main()
{
ifstream fin("perm2.in");
ofstream fout("perm2.out");
fin>>n;
for(int i=0;i<n;i++)
fin>>a[i];
for(int i=0;i<n;i++)
if(v[i]==0)
if(i!=a[i])
{
v[i]=1;
long long ciclu=2,numar=a[i];
while(numar!=i)
{
ciclu++;
v[numar]=1;
numar=a[numar];
}
rez=(rez/cmmdc(rez,ciclu))*ciclu;
}
fout<<rez-1;
return 0;
}