Дан массив, содержащий 70 неотрицательных целых чисел, не превышающих 1000. Опишите на одном из языков программирования алгоритм, позволяющий найти и вывести наименьшую сумму двух соседних элементов массива, имеющих одинаковую чётность. Гарантируется, что в массиве есть соседние элементы, имеющие одинаковую чётность. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
| Паскаль | Бейсик |
|---|---|
const N=70; var a: array [1..N] of integer; i, j, x, y: integer; begin for i:=1 to N do readln(a[i]); ... end. | N=70 DIM A(N) AS INTEGER DIM I, J, X, Y AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I ... END |
| Си++ | Алгоритмический язык |
#include <iostream> using namespace std; #define N 70 int main() { int a[N]; int i, j, x, y; for (i=0; i<N; i++) cin >> a[i]; | алг нач цел N=70 целтаб a[1:N] цел i, j, x, y нц для i от 1 до N ввод a[i] кц ... кон |
| Python | |
# допускается также # использовать три # целочисленные переменные j, x, y a = [] n = 70 for i in range(0, n): a.append(int(input())) ... | |
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Free Pascal 2.4) или в виде блок-схемы. В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.
Пример программы на Паскале:
у:=2001;
for i:=1 to N-1
do begin x:=a[i]+a [i + 1];
if (a[i] mod 2 = a[i+l] mod 2) and (x < y)
then y:=x;
end;
writeln(у);
Допускается использование других приёмов программирования, приводящих к верному результату.
В частности, разрешается использовать следующие способы:
1. Отказ от использования отдельной переменной для суммы двух элементов. В этом случае сумма может вычисляться повторно:
if (a[i] mod 2 = a[i+l] mod 2) and (a[i]+a[i+1]
2. Проверка совпадения чётности полным перебором вариантов:
if ( (a [i] mod 2 = 0) and (a[i + 1] mod 2 = 0) or (a[i] mod 2=1) and (a[i+l] mod 2=1)) and (a[i]+a[i+1]
3. Проверка совпадения чётности по чётности суммы:
if (х mod 2=0) and (х<у)
4. Использование вложенных условных операторов вместо составного условия:
if (a[i] mod 2 = a[i+l] mod 2) then if x
Допускаются и другие вариации при условии, что они соответствуют указанным в условии ограничениям и приводят к правильному ответу.

