Дан массив, содержащий 2017 положительных целых чисел, не превышающих 10000. Необходимо найти и вывести количество таких элементов этого массива, шестнадцатеричная запись которых содержит ровно два знака, причём последний из них – буква от A до F. Например, для массива из 4 элементов, содержащего числа 42, 255, 162, 266, ответ будет равен 2: в шестнадцатеричной системе эти числа записываются как 2A, FF, A2, 10A; первые два – подходят, в третьем – последняя цифра не записывается буквой, в четвертом – больше двух знаков. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных.
| Бейсик | 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 ровно два знака содержат числа
в интервале от p до p2-1. При p = 16 получаем интервал от 16 до 255.
При этом последняя цифра записи числа равна остатку от деления этого числа на p.
Для решения задачи необходимо просмотреть все числа в массиве и подсчитать количество тех, которые удовлетворяют заданным ограничениям.
Пример правильной программы на языке Паскаль
m:=0;
for i:=1 to N do begin
if (16<=a[i]) and (a[i]<=255) and
(a[i] mod 16 >= 10)
then m := m+1;
end;
writeln(m)

