РУҚА
25

Решение: Замена элементов массива

ЕГЭ · Информатика · Задание 25 · Массивы и строки
ПовышеннаяФИПИ6F4A08Развёрнутое решение≈ 10 минутРазбор в 5 шагов
Условие

Дан целочисленный массив из 30 элементов. Элементы массива могут принимать натуральные значения от 1 до 10 000 включительно. Опишите на одном из языков программирования алгоритм, который находит минимум среди элементов массива, делящихся нацело на 3, а затем заменяет каждый элемент, делящийся нацело на 3, на число, равное найденному минимуму. Гарантируется, что хотя бы один такой элемент в массиве есть. В качестве результата необходимо вывести изменённый массив, каждый элемент выводится с новой строчки.

Исходные данные объявлены заранее. В решении нельзя использовать переменные, не описанные в условии; разрешается не использовать некоторые из описанных переменных. Для Python используются переменные `a`, `n`, `i`, `j`, `k`, причём `n = 30`, а элементы массива находятся в списке `a`.

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

Открыть задачу и решить самому
Дальше ответЕсли ещё решаете — начните с подсказок: они ведут к ответу, но не выдают его.
К подсказкам

Решение по шагам

5 шагов
1

Для поиска минимума достаточно просмотреть все элементы массива и рассматривать только те, которые делятся на 3 без остатка.

$$a[i] \bmod 3 = 0$$
2

Переменную `j` можно изначально установить равной 10001 — числу, большему любого возможного элемента массива. При нахождении подходящего элемента меньшего значения обновляем минимум.

$$j = \min\{a[i] \mid a[i] \bmod 3 = 0\}$$
3

После нахождения минимума повторно просматриваем массив. Каждый элемент, делящийся на 3, заменяем найденным значением `j`.

4

Выводим все элементы изменённого массива по одному в строке.

Один из возможных фрагментов решения на Python:

$$j = 10001\nfor i in range(n):\n if a[i] \% 3 == 0 and a[i] < j:\n j = a[i]\nfor i in range(n):\n if a[i] \% 3 == 0:\n a[i] = j\nfor i in range(n):\n print(a[i])$$
Ответ

Python: `j = 10001; for i in range(n): if a[i] % 3 == 0 and a[i] < j: j = a[i]; for i in range(n): if a[i] % 3 == 0: a[i] = j; for i in range(n): print(a[i])`.

Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.

Где здесь ошибаются

Поиск минимума среди всех элементов, а не только среди делящихся на 3.

Замена элементов до того, как найден минимум.

Проверка делимости с помощью `a[i] / 3` вместо остатка от деления `a[i] % 3`.

Использование дополнительной переменной, не объявленной в условии.

Вывод элементов не по одному в строке.

Закрепить приёмВ теме «Массивы и строки» ещё 237 задач — с ответом и таким же разбором.
Тренироваться

Как решать задание 25 ЕГЭ, информатика

Разбор этой задачи разложен на 5 шагов: видно, откуда берётся каждое число и где теряется балл. Ответ приведён рядом с выкладками, а не вместо них.

Задача из темы «Массивы и строки»: в ней 238 задач, и у каждой есть такой же разбор. Регистрация не нужна.