Подразумевающееся решение: Объём информации о том, что отобран конкретный ученик, находится из уравнения 2^i = 64, т.е. i = 6 бит. Тогда было отобрано 72 / 6 = 12 человек.
На самом деле эта задача НЕКОРРЕКТНА. Разумнее хранить информацию о том, какое подмножество было выбрано. Всего подмножеств 2^64 - следовательно, любое подмножество однозначно кодируется 64 битами. Например, кодировать можно так: на i-м месте будем ставить 1, если i-ый претендент выбран, и 0 в противном случае. Тогда строчка 001000...00 будет говорить о том, что выбран только третий претендент, а 111...110 - все претенденты кроме последнего.
Type TMatrix = array[,] of integer; TVector = array of integer; var A: TMatrix; B: TVector; m,n,i,j: integer;
procedure CreateMulVector(A:TMatrix; var B: TVector); var i, j: integer; f: boolean; begin SetLength(B, Length(A, 0)); for i := 0 to Length(A, 0) - 1 do begin B[i] := 1; f := false; for j := 0 to Length(A, 1) - 1 do begin if A[i,j] > 0 then begin f := true; B[i] := B[i] * A[i,j]; end; end; if not f then B[i] := 0; end; end;
procedure WriteVector(B: TVector); var i: integer; begin for i := 0 to Length(B) - 1 do write(B[i]:3); end;
begin randomize; n := Random(10) + 1; m := Random(10) + 1; SetLength(A, n, m); writeln('Исходная матрица:'); for i := 0 to n-1 do begin for j := 0 to m-1 do begin A[i,j] := Random(10) - 5; write(A[i,j]:4); end; writeln; end;