Cod sursa(job #3177590)

Utilizator AndreiMaliAndrei Malinetescu AndreiMali Data 29 noiembrie 2023 15:32:41
Problema Permutari2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>

using namespace std;

int cmmmdc(int a, int b);

char v[20001];
int p[20001], n, i, cnt, x, m = 1;

int main()
{
    ifstream fin("perm2.in");
    ofstream fout("perm2.out");

    fin >> n;

    for (int i = 1; i<= n; i++)
    {
        fin >>p[i];
    }

    for(int i = 1; i <= n; i++)
    {
        if(v[i] == 0)
        {
            cnt = 1;
            x= p[i];

            while( i != x)
            {
                cnt++;
                v[x] = 1;
                x = p[x];
            }
            m = m * cnt / cmmmdc(m, cnt);
        }

    }

    fout << m;
    return 0;
}



























int cmmmdc(int a, int b)
{
    while (b != a)
    {
        int r = a % b;
        a = b;
        b = r;
    }
    return a;
}