Cod sursa(job #3177590)
| Utilizator | 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;
}
