Вычислить степень перестановки - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста решить эту задачу, код есть, но его не пропускает проверка сайта. Требуется вычислить степень заданной перестановки. Перестановкой из N элементов называется упорядоченный набор из N различных чисел от 1 до N. Количество различных перестановок порядка N равно PN = N! Пусть у нас есть упорядоченное множество из N элементов. Перестановка задает преобразование этого множества. А именно, она говорит, что на i место нужно поставить ai элемент множества, где ai - i-тый элемент перестановки. Обратной перестановкой к перестановке π называется такая перестановка π-1, что ππ-1 = π-1π = ε, где ε – тождественная перестановка. Степенью перестановки называется минимальное натуральное число k такое, что πk = ε Входные данные В первой строке входного файла записано число 0 < N <= 100 - порядок перестановки. Во второй строке записана сама перестановка.

Решение задачи: «Вычислить степень перестановки»

textual
Листинг программы
Program P23;
 
Const NMAX = 100;
 
Var X,Y,R   : Array[1..NMAX] Of integer;
Var n,i,q,k : integer;
 
Procedure multPerms(var A,B,R : Array[1..NMAX] of integer; n : integer);
Var i,k : integer;
Begin
    for i:=1 to n Do Begin
        k:=A[i];
        R[i]:=B[k];
    end;
End;
 
Begin
 
     readln(n);
     
     for i:=1 to n Do Begin
         Read(X[i]);
         Y[i]:=X[i];
     end;
     
     k:=0;
     
     While (true) Do Begin
     
         multPerms(Y,X,R,n);
         
         k:=k+1;
         q:=0;
         
         for i:=1 to n Do
             if R[i]<>i then begin
                q:=-1;
                break;
             end;
             
         if q=0 then break;
         
         for i:=1 to n Do
             Y[i]:=R[i];
 
     End;
 
     writeln(k);
     
End.

Объяснение кода листинга программы

  1. Создается программа P23.
  2. Определяется константа NMAX, которая представляет максимально допустимое значение для переменной n.
  3. Определяются переменные X, Y и R, которые представляют массивы целых чисел.
  4. Определяются переменные n, i, q и k, которые будут использоваться в процессе выполнения программы.
  5. Определяется процедура multPerms, которая принимает три параметра: A, B и R, а также один параметр n. Эта процедура будет использоваться для вычисления степени перестановки.
  6. В цикле while выполняется следующее:
    • вызывается процедура multPerms, передавая ей массивы X, Y и R, а также значение n.
    • переменная k инкрементируется на 1.
    • переменная q инициализируется значением 0.
    • для каждого i от 1 до n выполняется следующая проверка:
      • если значение R[i] отличается от i, то переменная q устанавливается в -1 и цикл прерывается.
      • если значение R[i] равно i, то переменная q устанавливается в 0 и цикл продолжается.
    • если значение q равно 0, то цикл прерывается.
    • для каждого i от 1 до n выполняется следующая операция: значение Y[i] заменяется на значение R[i].
  7. По завершении цикла while выводится значение переменной k.

Оцени полезность:

12   голосов , оценка 4.167 из 5