Дан массив, содержащий 2016 положительных целых чисел, не превышающих 1000. Необходимо найти и вывести максимальный из тех элементов этого массива, шестнадцатеричная запись которых заканчивается символом B. Если таких чисел в массиве нет, ответ считается равным нулю.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных переменных.
| Бейсик | 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; }
| |
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и версию языка программирования). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.
Последний символ записи числа в позиционной системе счисления показывает остаток от деления этого числа на основание системы. Чтобы шестнадцатеричная запись числа заканчивалась символом B, число должно при делении на 16 давать остаток 11.
Для решения задачи необходимо просмотреть все числа в массиве и выбрать максимальное среди тех, которые дают остаток 11 при делении на 16
Пример правильной программы на языке Паскаль
m:=0;
for i:=1 to N do begin
if (a[i] mod 16 = 11) and (a[i]>m)
then m := a[i];
end;
writeln(m)

