Cod sursa(job #3150892)

Utilizator PescarusTanislav Luca Andrei Pescarus Data 18 septembrie 2023 22:07:57
Problema A+B Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>
using namespace std;
ifstream f("perm2.in");
ofstream g("perm2.out");
int p[100005];
bool viz[100005];

int cmmmc(int a, int b){
    int p=a*b;
    while(b!=0){
        int r=a%b;
        a=b;
        b=r;
    }
    return p/a;
}
int main(){
    int n;
    int sol=1;
    f>>n;
    for(int i=1; i<=n; i++){
        f>>p[i];
    }

    for(int k=1; k<=n; k++){
        int i,len=1;
        if(!viz[k]){
            i=k;
            len=0;
            while(!viz[i]){
                len++;
                viz[i]=true;
                i=p[i];
            }
        }
        sol=cmmmc(sol,len);
    }
    g<<sol;
}