Для того, чтобы решить данную задачу, необходимо воспользоваться формулой N = 2^i, где N - максимальное количество цветов в палитре, а i - глубина цвета.
2^8 < 312 < 2^9
Если мы будем использовать глубину цвета равную 8 битам, то максимальное допустимое количество цветов в палитре будет равняться 256 (так как 2^8 = 256), что не удовлетворяет условиям задачи.
Значит, нам необходимо использовать глубину цвета равную 9 битам, так как при этом значении максимальное допустимое количество цветов в палитре будет равняться 512(так как 2^9 = 512), а значит для кодирования 312 цветов памяти хватит с избытком.
ответ: 9
// PascalABC.NET 3.1, сборка 1230 от 27.04.2016
begin
Writeln('Sпол.неч = ',ArrRandom(50,-10,20).Println
.Where((x,i)->(x>0) and (i.IsEven)).Sum)
end.
Тестовое решение
15 16 0 17 20 7 -3 -4 9 9 -3 -8 14 10 10 11 7 18 -8 8 0 15 1 4 11 1 9 -10 -7 -7 12 17 8 13 7 15 1 13 12 11 4 -5 -3 -6 -5 -10 -9 -8 8 -8
Sпол.неч = 148
2. Длинный "школьный" вариант ("почувствуйте разницу")
// PascalABC.NET 3.1, сборка 1230 от 27.04.2016
var
a:array[1..50] of integer;
i,s:integer;
begin
Randomize;
s:=0;
for i:=1 to 50 do begin
a[i]:=Random(31)-10; Write(a[i],' ');
if (a[i]>0) and Odd(i) then s:=s+a[i]
end;
Writeln;
Writeln('Sпол.неч = ',s)
end.
Тестовое решение
4 14 4 7 9 -4 3 6 20 -10 3 -3 15 12 9 0 3 12 13 -1 9 -2 -2 16 18 -2 5 9 17 -3 4 -6 10 10 -5 10 8 13 12 15 13 1 12 1 7 6 9 2 -9 -6
Sпол.неч = 207