Решение: Обработка массива в цикле
В программе используется одномерный целочисленный массив $A$ с индексами от 0 до 11. Значения элементов массива $A[i]$ приведены в таблице. Определите значение переменной $s$ после выполнения следующего фрагмента программы, записанного на пяти языках программирования.
| $i$ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| $A[i]$ | 53 | 17 | 33 | 12 | 49 | 8 | 3 | 20 | 2 | 19 | 7 | 22 |
1s = 0 2n = 2 3for i in range(1, 12): 4 if A[i - 1] // A[i] > n: 5 s += A[i] 6 else: 7 A[i] *= i
Решение по шагам
6 шаговНачинаем с $s=0$ и последовательно проверяем элементы массива. При $i=1$ выполняется условие $53 \mathbin{//} 17 > 2$, поэтому $s=17$.
$$s=17$$При $i=2$ условие не выполняется, поэтому $A[2]=33\cdot2=66$. При $i=3$: $66\mathbin{//}12>2$, поэтому к сумме прибавляется 12.
$$s=17+12=29$$При $i=4$ условие не выполняется, поэтому $A[4]=49\cdot4=196$. При $i=5$ условие выполняется, и к сумме прибавляется 8.
$$s=29+8=37$$При $i=6$ условие не выполняется, поэтому $A[6]=3\cdot6=18$. При $i=7$ условие также не выполняется, поэтому $A[7]=20\cdot7=140$.
$$s=37$$При $i=8$ выполняется условие $140\mathbin{//}2>2$, поэтому прибавляется 2. При $i=9$ условие не выполняется, поэтому $A[9]=19\cdot9=171$. При $i=10$ выполняется условие $171\mathbin{//}7>2$, поэтому прибавляется 7.
$$s=37+2+7=46$$При $i=11$ условие не выполняется, но значение $s$ уже не изменяется.
$$s=46$$Где здесь ошибаются
Не учитывать изменения элементов массива, выполненные в ветви else.
Использовать обычное, а не целочисленное деление.
Прибавлять к сумме изменённое значение элемента вместо его текущего значения до изменения.