Cod sursa(job #2163054)

Utilizator elenaisaiaElena Isaia elenaisaia 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;
}