• Дана последовательность натуральных чисел 1, 2, 3, ..., N (1 ≤ N ≤ 1000). Необходимо сначала расположить в обратном порядке часть этой последовательности от элемента с номером A до элемента с номером B, а затем от C до D (A < B; C < D; 1 ≤ A, B, C, D ≤ N).

    Входные данные
    Вводятся натуральные числа числа N, A, B, C, D.

    Выходные данные
    Требуется вывести полученную последовательность.

    Примеры
    входные данные
    9 2 5 6 9
    выходные данные
    1 5 4 3 2 9 8 7 6
    входные данные
    9 3 6 5 8
    выходные данные
    1 2 6 5 8 7 3 4 9
     Сделать на PascalABC


Ответы 1

  • PascalABC.NET 3.4.2, сборка 1863 от 10.11.2018Внимание! Если программа не работает, обновите версию!

    begin

     var N, A, B, C, D: integer;

     Readln(N, A, B, C, D);

     if A > C then (A, B, C, D) := (C, D, B, A);

     var s := 1.To(A - 1);

     if B < C then // ( ) [ ]

       s := s + B.Downto(A) + (B + 1).To(C - 1) +

           D.Downto(C) + (D + 1).To(N)

     else

     if D < B then // ( [ ] )

     begin

       s := s + SeqGen(C - A, t -> B - t) +

           SeqGen(D - C + 1, t -> t + A + B - D) +

           SeqGen(B - D, t -> A - t + B - D - 1) + (B + 1).To(N)

     end

       else // ( [ ) ]

     begin

       s := s + SeqGen(C - A, t -> B - t) +

           SeqGen(D - B, t -> D - t) + SeqGen(B - C + 1, t -> A + t) +

           (D + 1).To(N);

     end;

     s.Println;

    end.

    • Автор:

      sydnee
    • 6 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years