Задачка 1. Арифметическая прогрессияВасе дали задание: в заданной последовательности чисел
Задачка 1. Арифметическая прогрессия
Васе дали задание: в заданной последовательности чисел отыскать три попорядку идущих числа, образующих возрастающую арифметическую прогрессию. Вася решил написать программу, которая выводила бы тройку чисел, образующих возрастающую арифметическую прогрессию.
Помоги Васе написать такую программку.
Формат ввода
В первой строке входного файла записано естественное число N (3 N 1 000 000). Во 2-ой строке записано N неотрицательных целых чисел через пробел, каждое из которых не превосходит 1 000 000 000.
Формат вывода
В выходной файл выведите три разыскиваемых числа. Если ответов несколько, выведите те числа, которые размещены левее. Если таких чисел нет, выведите -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.
-
Вопросы ответы
Статьи
Информатика
Статьи
Разные вопросы.
Математика.
Физика.
Геометрия.
Разные вопросы.
Обществознание.
Математика.
Химия.
Русский язык.
Разные вопросы.