В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
KLIN50
KLIN50
29.04.2023 21:53 •  Информатика

1. арифметическая прогрессия васе дали : в заданной последовательности чисел найти три подряд идущих числа, образующих возрастающую арифметическую прогрессию. вася решил написать программу, которая выводила бы тройку чисел, образующих возрастающую арифметическую прогрессию. васе написать такую программу. формат ввода в первой строке входного файла записано натуральное число n (3 ≤ n ≤ 1 000 000). во второй строке записано n неотрицательных целых чисел через пробел, каждое из которых не превосходит 1 000 000 000. формат вывода в выходной файл выведите три искомых числа. если ответов несколько, выведите те числа, которые расположены левее. если таких чисел нет, выведите -1. желательно на паскале

Показать ответ
Ответ:
Alina2627848
Alina2627848
09.10.2020 04:33

Храним в памяти 3 последних считанных числа. Для каждой такой тройки проверяем, верно ли, что a[i] - a[i - 1] = a[i - 1] - a[i - 2] > 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 > 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.

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота