Для того, чтобы решить данную задачу, необходимо воспользоваться формулой N = 2^i, где N - максимальное количество цветов в палитре, а i - глубина цвета.
2^8 < 312 < 2^9
Если мы будем использовать глубину цвета равную 8 битам, то максимальное допустимое количество цветов в палитре будет равняться 256 (так как 2^8 = 256), что не удовлетворяет условиям задачи.
Значит, нам необходимо использовать глубину цвета равную 9 битам, так как при этом значении максимальное допустимое количество цветов в палитре будет равняться 512(так как 2^9 = 512), а значит для кодирования 312 цветов памяти хватит с избытком.
ответ: 9
var a:array[1..30] of integer;
r, i:integer;
begin
randomize;
ClrScr;
r:=0;
i:=1;
while i<31 do
if (r>100) and (r<1000) and ((r mod 4=0) or (r mod 5=0)) then
begin
a[i]:=r;
r:=random(1000);
inc(i);
end else r:=random(1000);
for i:=1 to 30 do
write(a[i]:4);
end.