Cod sursa(job #2496170)

Utilizator davidloldavid dobrin davidlol Data 20 noiembrie 2019 12:51:59
Problema Permutari2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <iostream>

#include <fstream>



using namespace std;



ifstream in ("perm2.in");

ofstream out ("perm2.out");



int v [100000];



int cmmmc (int a, int b) {

    int r, p = a * b;

    while (b) {

        r = a % b;

        a = b;

        b = r;

    }

    return p / a;

}



int ciclu (int p) {

    int nr = 0, aux;

    while (v [p] != 0) {

        aux = p;

        p = v [p];

        nr ++;

        v [aux] = 0;

    }

    return nr;

}



int main() {

    int n, c = 1;

    in >> n;

    for (int i = 1; i <= n; i ++) {

        in >> v [i];

    }

    for (int i = 1; i <= n; i ++) {

        if (v [i] != i && v[i] != 0) {

            c = cmmmc (c, ciclu (i));

        }

    }

    out << c;

    return 0;

}