Задачка 1. Арифметическая прогрессияВасе дали задание: в заданной последовательности чисел

Задачка 1. Арифметическая прогрессия
Васе дали задание: в заданной последовательности чисел отыскать три попорядку идущих числа, образующих возрастающую арифметическую прогрессию. Вася решил написать программу, которая выводила бы тройку чисел, образующих возрастающую арифметическую прогрессию.

Помоги Васе написать такую программку.

Формат ввода
В первой строке входного файла записано естественное число N (3 N 1 000 000). Во 2-ой строке записано N неотрицательных целых чисел через пробел, каждое из которых не превосходит 1 000 000 000.

Формат вывода
В выходной файл выведите три разыскиваемых числа. Если ответов несколько, выведите те числа, которые размещены левее. Если таких чисел нет, выведите -1.


Желанно на паскале

Задать свой вопрос
1 ответ

Бережём в памяти 3 последних считанных числа. Для каждой таковой тройки проверяем, правильно ли, что a[i] - a[i - 1] = a[i - 1] - a[i - 2] gt; 0. Если это так, выводим тройку, устанавливаем флаг found и выходим из цикла. Если после окончания работы цикла found = false, то тройка не найдена, необходимо вывести -1.

В PascalABC.NET тип integer бережёт числа до 2 с лишним миллиардов, все числа и разность чисел должны в нем поместиться.

Код (PascalABC.NET 3.4.2.1837):

begin

 var values := new integer[3];

 var n := readinteger;

 (values[1], values[2]) := readinteger2;

 var prev_diff := values[1] - values[0];

 var found := false;

 for var i := 3 to n do begin

   values[i mod 3] := readinteger;

   var diff := values[i mod 3] - values[(i - 1) mod 3];

   if (diff = prev_diff) and (diff gt; 0) then begin

     print(values[(i - 2) mod 3], values[(i - 1) mod 3], values[i mod 3]);

     found := true;

     break;

   end;

   prev_diff := diff;

 end;

 if not found then print(-1);

end.

, оставишь ответ?
Имя:*
E-Mail:


Последние вопросы

Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт