Дан массив, содержащий 2016 положительных целых чисел, не превышающих 1000. Необходимо найти и вывести максимальный из тех элементов этого массива, шестнадцатеричная запись которых содержит ровно 2 цифры. Если таких чисел в массиве нет, ответ считается равным нулю. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных.
Бейсик | Python |
---|---|
CONST N=2016 DIM A(N) AS INTEGER DIM I, M, K AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I … END
| # допускается также использо- # вание целочисленных # переменных m, k a = [] N = 2016 for i in range(0, N): a.append(int(input())) …
|
Паскаль | Алгоритмический язык |
const N=2016; var a: array [1..N] of integer; i, m, k: integer; begin for i:=1 to N do readln(a[i]); … end.
| алг нач цел N=2016 целтаб a[1:N] цел i, m, k нц для i от 1 до N ввод a[i] кц … кон |
Си++ | |
#include <iostream> using namespace std; #define N 2016 int main(){ int a[N]; int i, m, k; for (i=0; i < N; i++) cin >> a[i]; … return 0; } |
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и версию языка программирования). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.
В системе счисления с основанием p две цифры требуется для записи чисел в диапазоне [p1; p2). При p = 16 получаем диапазон [16; 256). Для решения задачи необходимо просмотреть все числа в массиве и выбрать максимальное среди тех, которые попадают в этот диапазон
Пример правильной программы на языке Паскаль
m:=0;
for i:=1 to N do begin
if (16<=a[i]) and (a[i]<256) and (a[i]>m)
then m := a[i];
end;
writeln(m)