Ниже представлен записанный на разных языках программирования фрагмент одной и той же программы. В программе описан одномерный целочисленный массив А, в представленном фрагменте программы обрабатываются элементы массива с индексами от 1 до 10.
| Бейсик | Паскаль |
|---|---|
n = 10 FOR i = 1 ТО n A (n+1-i) = 2*A(i) NEXT i
| n := 10; for i := 1 to n do begin A [n+1-i] := 2*A[i]; end;
|
| Си++ | Алгоритмический язык |
n = 10; for (i = 1; i <= n; i++) { A [n+1-i] = 2*A[i]; } | n : = 10 нц для i от 1 до n A[n+1-i] := 2*A[i] кц |
| Python | |
n = 10 for i in range(1, n+1): A [n+1-i] = 2*A[i] | |
Перед началом выполнения фрагмента элементы массива имеют значения соответственно
1, 2, 4, 8, 16, 32, 64, 128, 256, 512, т. е. A[k] = 2k-1, k = 1, ..., 10.
Укажите значение, которое после выполнения указанного фрагмента программы имеют два или более рассмотренных в этом фрагменте элемента массива. Если таких чисел несколько, укажите наибольшее из них.
1) такого значения нет
2) 8
3) 32
4) 128
Так будет выглядеть массив после шестого шага:
A[10] = 2
A[9] = 4
A[8] = 8
A[7] = 16
A[6] = 32
A[5]= 16
A[4]= 8
A[3] = 4
A[2] = 2
A[1] = 1
Так после десятого:
A[10] = 2
A[9] = 4
A[8] = 8
A[7] = 16
A[6] = 32
A[5]= 64
A[4]= 32
A[3] = 16
A[2] = 8
A[1] = 4
Наибольшее из повторяющихся чисел — 32.
Ответ: 3.


Извините, я не совсем понял, как вы сразу узнали вид массива после шестого шага. Можно ещё подробнее пояснить. Уверен, многие будут признательны
Это сделано последовательно с первого шага.
Иначе никак нельзя, потому что A[i] зависит от A[i-1].