Разбор задачи A8 (демо ЕГЭ 2005)
Бейсик | Паскаль | Алгоритмический | Си |
---|---|---|---|
FOR n=1 TO 4 FOR k=n TO 4 A(n,k)=A(n,k)+1 A(k,n)=A(k,n)+1 NEXT k NEXT n |
for n:=1 to 4 do for k:=n to 4 do begin A[n, k]:=A[n, k]+1; A[k, n]:=A[k, n]+1; end |
нц для n от 1 до 4 нц для k от n до 4 A[n, k]:=A[n, k]+1 A[k, n]:=A[k, n]+1 кц кц |
for(n=1;n<=4;n++) for(k=n;k<=4;k++){ A[n][k]=A[n][k]+1; A[k][n]=A[k][n]+1; } |
Сколько элементов массива в результате будут равны 1?
- 0
- 16
- 12
- 4
Изначально двумерная матрица имеет размер 10x10. Все его элементы равны нулю. В процессе работы программы изменяется только часть матрицы размером 4х4. С ней и будем работать
Всего элементов 4*4=16.
После выполнения программы все элементы матрицы, кроме элементов диагонали, примут значение "1". Элементы диагонали будут равны "2", т.к. для диагонали n=k => A[n,k]=A[k,n]. Получается, что во время очередного прохода вложенного цикла k 2 раза прибавляем 1.
Рассмотрим подробно работу программы.
Работа цикла k при n=1 (k=1, k=2, k=3, k=4):
k=1 | k=2 | k=3 | k=4 | |
---|---|---|---|---|
n=1 | 2 | 1 | 1 | 1 |
n=2 | 1 | 0 |
0 |
0 |
n=3 | 1 | 0 |
0 |
0 |
n=4 | 1 | 0 |
0 |
0 |
Работа цикла k при n=2 (k=2, k=3, k=4):
k=1 | k=2 | k=3 | k=4 | |
---|---|---|---|---|
n=1 | 2 | 1 | 1 | 1 |
n=2 | 1 | 2 | 1 | 1 |
n=3 | 1 | 1 | 0 |
0 |
n=4 | 1 | 1 | 0 |
0 |
Работа цикла k при n=3 (k=3, k=4):
k=1 | k=2 | k=3 | k=4 | |
---|---|---|---|---|
n=1 | 2 | 1 | 1 | 1 |
n=2 | 1 | 2 | 1 | 1 |
n=3 | 1 | 1 | 2 | 1 |
n=4 | 1 | 1 | 1 | 0 |
Работа цикла k при n=4 (k=4):
k=1 | k=2 | k=3 | k=4 | |
---|---|---|---|---|
n=1 | 2 | 1 | 1 | 1 |
n=2 | 1 | 2 | 1 | 1 |
n=3 | 1 | 1 | 2 | 1 |
n=4 | 1 | 1 | 1 | 2 |
Пример кода и результат выполнения программы (Алгоритмический язык, среда Кумир)
Получили, что в массиве количество элементов со значением "1" равно 12.