ответ: 9 бит (для изображения 1 на 1 пиксель)
Для других размеров- смотри внизу решения.
Сначала найдём минимальное количество бит для кодирования одного пикселя (точки) такого изображения.
Это будет такое минимальное целое n, которое удовлетворяет неравенству
Это n проще всего найти, используя таблицу степеней числа 2.
Ищем в ней минимальную степень, большую или равную числу 260, а затем смотрим её показатель. В результате мы найдём степень 512 и показатель для этой степени, равный 9.
То есть, можем сразу после неравенства записать, что n = 9.
Однако, можно записать и общую формулу. Решим неравенство и запишем формулу для минимального целого n (используя двоичный логарифм (его можно заменить десятичным или натуральным), а затем округление вверх):
Вычисляем:
(бит)
Это и будет минимальное число бит для самого маленького указанного изображения (размером 1 на 1 пискель, то есть состоящего всего из 1 * 1 = 1 пикселя)
Если же изображение имеет другие размеры (обозначим как x и y ), то это число бит для одного пискселя надо будет умножить на число пикселей в изображении (произведение икс и игрек) и получим общее число бит для кодирования такого изображения: n*x*y
Хотя слово «центнер» немецкого происхождения и означает «сто мер», традиционно в Германии в старину за меру веса принимали не килограмм, а фунт, который соответствует приблизительно 500 граммам. То есть 100 фунтов — 50 килограммов. Этой мерой веса в старину пользовались люди, занятые в сельском хозяйстве: например, центнер картофеля — полный мешок, 50 кг. В разных частях Германии центнер был разный: в Баварии, например, — 56 кг; в Брауншвейге — 46,77 кг; в Саксонии — 51,4 кг. Сейчас в Германии берётся усреднённая величина 50 кг[1].
:)
всего доброго
var
a: array [1..n] of integer;
i,l,m,k: integer;
begin
for i := 1 to n do read(a[i]);
l := 1;
while l < n do
begin
while (a[l] mod 2 = 0) and (l < n) do l := l + 1;
if l < n then
begin
k := l;
m := a[l];
for i := l+1 to n do
if a[i] mod 2 <> 0 then
if a[i] > m then
begin
m := a[i];
k := i
end;
a[k] := a[l];
a[l] := m;
l := l + 1
end;
end;
for i := 1 to n do write(a[i],' ')
end.