Задача к ЕГЭ по информатике на тему «соседние элементы, проверка условий» №4

Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от -10000 до 10000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти количество элементов массива, чья сумма цифр кратна 5. В качестве результата выведите измененный массив, каждый элемент выводится с новой строки. Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных. Индексация элементов в массиве начинается с нуля.

|--------------------------------|------------------------------------|-------------------------| |Бейси-к-------------------------|Python------------------------------|А-лгори-тми-ческий-язы-к-| |CON  ST N ASIN   TEGER    = 30  |#   допуск ается такж е             |ал-г                     | |DIM  A (0TON   − 1)ASLON    G   |#   испол ьзовать три               |нач-                     | |DIM  IASLON    G                |# ц елочисл енны е п еремен ны е i,t,k  ц елN  = 30            | |    T ASLON   G                 |a = []                              |  ц-елтабa[0 : N − 1]    | |                                |                                    |  -------                | |    KASLON     G                |n = 30                              |  ц-елi,t,k               | |FORI   = 0T ON  − 1             |foriinrange (0,n) :                 |  н-ц-дляiот0д-оN −  1   | |    IN P U TA (I)               |  a.append (int(input ()))            |     вводa[i]            | |N EXT  I                        |...                                  |  к ц                    | |                                |                                    |  ----                   | |...                              |                                    |...                       | -EN-D------------------------------------------------------------------кон-----------------------

|--------------------------------|------------------------------------| |-П-аскаль-----------------------|C-+-+-------------------------------| |const                           |#include  < iostream  >             | |  N  =  30                      |usingnamespacestd;                  | |var                             |constintN  = 30;                    | |                                |                                    | |  a : array[0..N  − 1]oflongint; |intmain (){                         | |  i,t,k : longint;              |longa[N ];                          | |begin                           |longi,t,k;                          | |  f ori := 0toN − 1do           |for(i = 0;i < N ;i + +)cin > > a[i]; | |     readln(a[i]);               |…                                  | |                                |                                    | |…                              |return0;                            | -end.——————————}————————————| » class=»math-display» width=»auto»></center> </p>
<p class= В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Cython 0.20). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в приведённых фрагментах.

Например, для исходного массива из 10 элементов

34

53363

-535

64

3

6

3536

-5

35

2434

программа должна вывести

3

(Под условие подходят 53363 (сумма цифр = 20), 64 (сумма цифр = 10), -5 (сумма цифр = 5)).

В цикле f or  от 0 до N  мы будем перебирать элементы массива. В переменной k  мы будем хранить количество элементов, чья сумма цифр кратна 5. Так как изначально таких элементов нет, приравняем k  к нулю в начале.

Опишем алгоритм нахождения суммы цифр числа. Пусть у нас есть число 354. Его последнюю цифру 4 можно найти как остаток от деления на 10 числа 354. Попробуем так же найти и предпоследнюю цифру. Если мы целочисленно разделим 354 на 10, то получим 35, и цифра 5 тогда будет последней. Ее мы уже умеем находить как остаток от деления на 10 всего числа, в данном случае этим числом является 35. Аналогично мы найдем и первую цифру исходного числа, разделив вначале 35 на 10, а потом взяв остаток от деления на 10.

Так как нам заранее неизвестно количество цифр в числе, мы будем использовать цикл while  (внутри цикла for  ). Пока рассматриваемое нами число больше или равно 1 (это условие выполнения), мы будем выполнять то, что написано в теле цикла. Как только число станет меньше 1, мы выйдем из цикла (если число стало меньше 1, то мы рассмотрели все его цифры и дальше просто целочисленно делим на 10 и будем получать 0).

Сумму цифр числа будем записывать в переменную t  . Приравняем ее изначально вне цикла  while  (но внутри цикла for  , чтобы t  была равна нулю для каждого следующего элемента) к нулю и будем прибавлять к ней цифру, которую нашли как остаток от деления на 10. После этого будем целочисленно делить на 10, чтобы ’убрать»последнюю цифру числа. После того, как мы выйдем из цикла, в t  будет храниться сумма цифр исходного числа. Если она оказалась кратна 5 (остаток от деления на 5 равен 0), то мы прибавим к k  единицу, что будет значить, что подходящих нам элементов стало на один больше. Вне обоих циклов выведем k  в соответствии с условием.

Пример программы на C + +  :

k = 0;

for(i = 0;i < N ;i + + ){

t = 0;

while(a[i] >= 1){ » class=»math» width=»auto»> </p>
<p class= t+ =  a[i]%10;

a[i]∕ = 10;

}

if(t%5 ==  0)k + +;

}

cout < < k;

Ответ: см. решение
Оцените статью
Я решу все!