Определим глубину кодирования i=I/М, где I- объем изображения (бит), M - количество пикселей.
i=(30*1024*8)/(300*200)= 4 бита
Количество цветов получаем из формулы: N=2^i
N=2^4= 16
Ответ: 16 цветов
В номере 28 ответ получается 29
<em>// PascalABC.NET 3.3, сборка 1625 от 17.01.2018</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
Writeln('*** Исходный массив ***');
var v:=MatrRandom(7,7,-15,15);
v.Println(4); Writeln(4*v.ColCount*'-');
var pr3:=v.Row(2).Aggregate(1,(x,y)->x*y);
Writeln('Произведение элементов 3-й строки равно ',pr3);
Writeln('Количество элементов, больших этого произведения, равно ',
v.ElementsByRow.Where(t->t>pr3).Count);
Writeln('Максимум в 3-м столбце равен ',v.Col(2).Max)
end.
<u>Пример</u>
*** Исходный массив ***
-4 -12 -15 -2 13 3 -15
-7 -1 -15 2 -2 4 -6
14 5 5 15 -4 3 0
13 15 9 14 11 -9 11
1 14 14 1 -4 -1 -7
15 -10 -13 -3 -8 -12 11
0 -13 -8 4 6 1 -11
----------------------------
Произведение элементов 3-й строки равно 0
Количество элементов, больших этого произведения, равно 24
Максимум в 3-м столбце равен 14
Var n, m: integer;
begin
readln(n, m);
writeln(exp(ln(n) * m));
<span>end.
Можно было через циклы, но там слишком много условностей (вдруг степень отрицательна?) а так в одно действие уложилось)</span>
<u>PascalABC.NET 3.3.5, сборка 1660 от 20.04.2018</u>
<u>Внимание! Если программа не работает, обновите версию!</u>
procedure Preobraz(var Stroka:string);
begin
var bq:=new Queue<(integer,integer)>;
foreach var m in Stroka.Matches('\s+') do
bq.Enqueue((m.Index,m.Length));
var wq:=new Queue<(integer,string)>;
foreach var m in Stroka.Matches('\S+') do
if m.Value.Any(t->t in ['0'..'9']) then wq.Enqueue((m.Index,''))
else wq.Enqueue((m.Index,m.Value));
Stroka:='';
var pbi,pwi:integer;
while (bq.Count>0) and (wq.Count>0) do begin
(pbi,pwi):=(bq.Peek[0],wq.Peek[0]);
if pbi<pwi then begin
Stroka:=Stroka+bq.Peek[1]*' ';
bq.Dequeue
end
else begin
Stroka:=Stroka+wq.Peek[1];
wq.Dequeue
end
end;
while bq.Count>0 do begin
Stroka:=Stroka+bq.Peek[1]*' ';
bq.Dequeue
end;
while wq.Count>0 do begin
Stroka:=Stroka+wq.Peek[1];
wq.Dequeue
end
end;
begin
var s:=ReadlnString;
Preobraz(s);
s:='<'+s+'>'; // чтобы было видно, как работает
s.Println
end.