ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1024. Перестановки

TLE. test #11
Послано FlashKa 6 июл 2008 03:25
#include <iostream>
#include <memory>
 using namespace std;

 int n;
 int a[1000], b[1000],c[1000];

 int NOK(int a, int b)
 {
    int x=a, y=b;
    while (a!=0 && b!=0)
        if (a>b) a%=b;
        else b%=a;
    return (x*y)/(a+b);
 }

 int main()
 {
    cin>>n;
    bool rc=true;
    for (int i=0; i<n; i++)    cin>>a[i];
    int p=1;
    for (int i=0; i<n; i++)
    {
        int r=1;
        b[i]=a[i];
        while (b[i]!=i+1)
        {
            b[i]=a[b[i]-1];
            r++;
        }
        c[i]=r;
        p=NOK(p, c[i]);
    }
    cout<<p<<endl;
    return 0;
 }