Сдвинуть последовательность - 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.

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

  1. Объявляется переменная n типа Integer для сохранения размера последовательности.
  2. Объявляется переменная k типа Integer для хранения значения, на которое нужно сдвинуть последовательность.
  3. Объявляется переменная i типа Integer для использования в циклах.
  4. Объявляется массив a размером до 100000 целых чисел (Integer).
  5. Считывается значение n с помощью функции Read.
  6. В цикле от 0 до n-1 считывается последовательность чисел и сохраняется в массив a.
  7. Считывается значение k с помощью функции Read.
  8. Значение k изменяется на остаток от деления на n, чтобы учесть крайние случаи сдвига.
  9. В цикле от Ord(k>=0)*n-k до n-1 выводятся элементы последовательности, начиная с элемента, на который произошел сдвиг.
  10. В цикле от 0 до Ord(k>=0)*n-k-1 выводятся элементы последовательности, до элемента, на который произошел сдвиг.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

11   голосов , оценка 3.909 из 5
Похожие ответы