Сдвинуть последовательность - Pascal
Формулировка задачи:
Дана последовательность из N (1 ≤ N ≤ 100000) целых чисел и число K (|K| ≤ 100000). Сдвинуть всю последовательность на |K| элементов вправо, если K – положительное и влево, если отрицательное, и вывести (не меняя элементы массива местами)
Ограничение 1 секунда.
Подскажите, как сделать рациональнее
Листинг программы
- var n,i,m:integer;
- a:array[1..100000] of integer;
- begin
- readln(n);
- for i:=1 to n do
- read(a[i]);
- read(m);
- if m>=0 then begin
- m:=(m mod n);
- for i:=(n-m+1) to n do
- write(a[i], ' ');
- for i:=1 to (n-m) do
- write(a[i], ' ');
- m:=1;
- end;
- if m<0 then begin
- m:=abs(m);
- m:=(m mod n)+1;
- for i:=m to n do
- write(a[i], ' ');
- for i:=1 to m-1 do
- write(a[i], ' ');
- m:=1
- end;
- end.
Решение задачи: «Сдвинуть последовательность»
textual
Листинг программы
- var
- n, k, i: Integer;
- a: array[0..99999] of Integer;
- begin
- Read(n); for i:=0 to n-1 do Read(a[i]);
- Read(k); k:=k mod n;
- for i:=Ord(k>=0)*n-k to n-1 do Write(' ',a[i]);
- for i:=0 to Ord(k>=0)*n-k-1 do Write(' ',a[i]);
- end.
Объяснение кода листинга программы
- Объявляется переменная
n
типа Integer для сохранения размера последовательности. - Объявляется переменная
k
типа Integer для хранения значения, на которое нужно сдвинуть последовательность. - Объявляется переменная
i
типа Integer для использования в циклах. - Объявляется массив
a
размером до 100000 целых чисел (Integer). - Считывается значение
n
с помощью функции Read. - В цикле от 0 до
n-1
считывается последовательность чисел и сохраняется в массивa
. - Считывается значение
k
с помощью функции Read. - Значение
k
изменяется на остаток от деления наn
, чтобы учесть крайние случаи сдвига. - В цикле от
Ord(k>=0)*n-k
доn-1
выводятся элементы последовательности, начиная с элемента, на который произошел сдвиг. - В цикле от 0 до
Ord(k>=0)*n-k-1
выводятся элементы последовательности, до элемента, на который произошел сдвиг.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д