Ход рассуждений таков:
Как в результате получить 7 литров? – Нужно к 5 литрам долить 2 л. А где их взять? – Из 5-литрового сосуда отлить 3 л. А как их получить? В 8-литровый перелить из 5-литрового 5 литров, потом еще три.
Решение задачи показано в таблице:
Ходы
1
2
3
4
5
6
7
8 л
0
5
5
8
0
2
7
5 л
5
0
5
2
2
5
0
Попробуйте решить подобную задачу самостоятельно:
// Внимание! Если программа не работает, обновите версию!
function GetDiagNeganives(a:array[,] of integer):sequence of integer;
begin
for var i:=0 to a.RowCount-1 do
if a[i,i]<0 then yield(i)
end;
function GetSumm(a:array[,] of integer; t:sequence of integer):integer;
begin
Result:=0;
foreach var e in t do
Result+=a.Row(e).Sum
end;
procedure MatrixWrite(a:array[,] of integer);
begin
var n:=a.RowCount;
Writeln('*** Исходная матрица [',n,',',n,'] ***');
a.Println(4); Writeln(4*a.ColCount*'-')
end;
begin
var n:=ReadInteger('Количество строк/столбцов в матрице:');
var a:=MatrRandom(n,n,-99,99);
MatrixWrite(a);
var s:=GetDiagNeganives(a);
Writeln('S=',GetSumm(a,s))
end.
Пример
Количество строк/столбцов в матрице: 5
*** Исходная матрица [5,5] ***
-31 -1 -29 -69 -19
-83 84 52 42 52
13 -24 -70 98 -33
60 -94 -84 19 -14
-55 81 -36 57 98
S=-165
А - отобразит страницы, которые одновременно относятся и к контрольным, и к зачётам, и к экзаменам - самый узкий диапазон поиска.
Г - отобразит страницы, относящиеся к контрольным и зачётам одновременно. Шире, чем А, но уже, чем остальные варианты.
Б - отобразит страницы, относящиеся к контрольным и зачётам одновременно, а также к экзаменам;
В - отобразит страницы, относящиеся к контрольным, или к зачётам, или к экзаменам.
Таким образом, последовательность запросов будет выглядеть следующим образом: А - Г - Б - В.
Более наглядное объяснение вывода страниц на картинке.