СДАМ ГИА: РЕШУ ЕГЭ
Образовательный портал для подготовки к экзаменам
Информатика
≡ информатика
сайты - меню - вход - новости




Задания
Версия для печати и копирования в MS Word
Задание 25 № 14240

Дан массив, содержащий 2018 положительных целых чисел, не превышающих 10000. Необходимо найти и вывести максимальный из тех элементов этого массива, десятичная и шестнадцатеричная запись которых заканчивается одним и тем же символом. Если таких чисел в массиве нет, ответ считается равным нулю.

Например, для массива из четырёх элементов, равных 80, 91, 162 и 250, в ответе должно получиться 162. В шестнадцатеричном виде эти числа записываются как 50, 5B, A2 и FA. Последний символ в десятичной и шестнадцатеричной записи совпадает у первого и третьего числа, большее из них — третье, то есть 162.

 

Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных.

 

 

БейсикPython

CONST N=2018

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 = 2018

for i in range(0, N):

    a.append(int(input()))

ПаскальАлгоритмический язык

const

    N=2018;

var

    a: array [1..N] of integer;

    i, m, k: integer;

begin

    for i:=1 to N do

        readln(a[i]);

    …

end.

алг

нач

    цел N=2018

    целтаб a[1:N]

    цел i, m, k

    нц для i от 1 до N

        ввод a[i]

    кц

    …

кон

Си++

#include <iostream>

using namespace std;

const int N = 2018;

int main(){

    int a[N];

    int i, m, k;

    for (i=0; i        cin >> a[i];

    …

    return 0;

}

 

 

В качестве ответа необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и версию языка программирования). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.

Решение.

Последний символ записи числа в позиционной системе счисления показывает остаток от деления этого числа на основание системы.

Для решения задачи необходимо просмотреть все числа в массиве и выбрать максимальное среди тех, которые дают одинаковый остаток при делении на 10 и на 16.

 

 

Паскаль

m:=0;

for i:=1 to N do begin

    if (a[i] mod 16 = a[i] mod 10) and (a[i]>m)

        then m := a[i];

end;

writeln(m)

 

При использовании Python можно применить специальные средства этого языка, которые позволяют записать все действия в одной строке без явного задания цикла.

 

Python

print(max((m for m in a if m%10 == m%16), default=0))

 

При написании подобной программы очень важно использовать параметр default (допустим, начиная с версии Python 3.4) или какой-то другой способ обработки ситуации, когда в исходных данных нет подходящих элементов.