Дан массив, содержащий 2017 положительных целых чисел, не превышающих 10000. Необходимо найти и вывести сумму таких элементов этого массива, шестнадцатеричная запись которых содержит ровно три знака, причём последний из них – буква от A до F. Например, для массива из 4 элементов, содержащего числа 522, 4095, 296, 205, ответ будет равен 4617: в шестнадцатеричной системе эти числа записываются как 20A, FFF, 128, CD; первые два подходят, в третьем – последняя цифра не записывается буквой, в четвёртом – меньше трёх знаков. Если таких чисел в массиве нет, сумма считается равной 0. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных.
| Бейсик | Python |
|---|---|
CONST N=2017 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 = 2017 for i in range(0, N): a.append(int(input())) …
|
| Паскаль | Алгоритмический язык |
const N=2017; var a: array [1..N] of integer; i, m, k: integer; begin for i:=1 to N do readln(a[i]); … end.
| алг нач цел N=2017 целтаб a[1:N] цел i, m, k нц для i от 1 до N ввод a[i] кц … кон |
| Си++ | |
#include <iostream> using namespace std; #define N 2017 int main(){ int a[N]; int i, m, k; for (i=0; i<N; i++) cin >> a[i]; … return 0; }
| |
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и версию языка программирования). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.
В системе счисления с основанием p ровно три знака содержат числа в интервале от p2 до p3-1. При p=16 получаем интервал от 256 до 4095. При этом последняя цифра записи числа равна остатку от деления этого числа на основание системы счисления. Для решения задачи необходимо просмотреть все числа в массиве и подсчитать сумму тех, которые удовлетворяют заданным ограничениям.
Пример правильной программы на языке Паскаль
m:=0;
for i:=1 to N do begin
if (256<=a[i]) and (a[i]<=4095) and
(a[i] mod 16 >= 10)
then m := m+a[i];
end;
writeln(m)

