Шешімі: Замена элементов массива
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать натуральные значения от 1 до 10 000 включительно. Опишите на одном из языков программирования алгоритм, который находит минимум среди элементов массива, делящихся нацело на 3, а затем заменяет каждый элемент, делящийся нацело на 3, на число, равное найденному минимуму. Гарантируется, что хотя бы один такой элемент в массиве есть. В качестве результата необходимо вывести изменённый массив, каждый элемент выводится с новой строчки.
Исходные данные объявлены заранее. В решении нельзя использовать переменные, не описанные в условии; разрешается не использовать некоторые из описанных переменных. Для Python используются переменные `a`, `n`, `i`, `j`, `k`, причём `n = 30`, а элементы массива находятся в списке `a`.
В качестве ответа приведите фрагмент программы, который должен находиться на месте многоточия после ввода массива. Можно использовать Python или другой язык программирования, указав его название и версию. В решении необходимо использовать те же исходные данные и переменные, которые предложены в условии.
Шешім по шагам
5 қадамДля поиска минимума достаточно просмотреть все элементы массива и рассматривать только те, которые делятся на 3 без остатка.
$$a[i] \bmod 3 = 0$$Переменную `j` можно изначально установить равной 10001 — числу, большему любого возможного элемента массива. При нахождении подходящего элемента меньшего значения обновляем минимум.
$$j = \min\{a[i] \mid a[i] \bmod 3 = 0\}$$После нахождения минимума повторно просматриваем массив. Каждый элемент, делящийся на 3, заменяем найденным значением `j`.
Выводим все элементы изменённого массива по одному в строке.
Один из возможных фрагментов шешімдер на 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`.
Использование дополнительной переменной, не объявленной в условии.
Вывод элементов не по одному в строке.