Пусть дана матрица А размером n x n.
Обнуляем переменную s, в которой будет накапливаться сумма элементов главной диагонали и переменную k, в которой будет накапливаться количество отобранных элементов.
В цикле для i от 1 до n повторяем следующее действие:
- если значение А[i,i]>0, то добавляем его в s и увеличиваем k на единицу.
Когда цикл завершится, найдем среднее арифметическое как s/k.
Всего команда 16.
N = 16
i = 4
Информация об одной команда - 4 бита.
Ответ: 4 бита информации
<em>Как говорится, это вам не С++ - тут все очень быстро и коротко ))))
// PascalABC.NET 3.3, сборка 1531 от 30.08.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
var L:=new List<(string,real)>;
// это не решение задачи, это ввод данных
Writeln('Введите в каждой строке фамилию, пробел, время');
var i:=1;
repeat
var s:=ReadlnString(i+': ');
if s[1]='*' then break;
var w:=s.ToWords;
L.Add(Rec(w[0],real.Parse(w[1])));
i+=1;
until false;
// а теперь само решение
Writeln(L.MinBy(x->x[1]))
end.
<u>Пример</u>
Введите в каждой строке фамилию, пробел, время
1: Иванов 10.3
2: Петров 9.9
3: Уточкин 10.1
4: *
(Петров,9.9)
18,потому что если 9*9,то получится 81,а если перевернуть цифры получится 18.