begin Randomize; Writeln('Элементы массива'); for i := 1 to n do begin a[i] := Random(61) - 30; Write(a[i]:4); if a[i]>0 then a[i]:=2*a[i] else if a[i]<0 then a[i]:=7 end; Writeln; Writeln('После преобразования'); for i := 1 to n do Write(a[i]:4); Writeln end.
Если нужно достать минимальное число шаров чтобы среди них точно оказалось по одному каждого цвета, то Допустим, первые 5 шаров - синие (всегда рассматривается худший случай) Допустим, следующие 3 шара - красные Тогда все оставшиеся шары будут желтыми, и достаточно достать любой из них 5+3+1=9 ответ: 9 шаров. P.S. Если достать меньшее кол-во, то возможна ситуация, при которой будут не все шары. Например, если достать 8 шаров, возможно что будут только синие и красные. Но если достать 9, то в любом случае среди них будет каждый цвет. Хотя, возможна ситуация, в которой при наличии 3 шаров будут присутствовать шары каждого цвета.
n = 15;
var
a: array[1..n] of integer;
i: integer;
begin
Randomize;
Writeln('Элементы массива');
for i := 1 to n do
begin
a[i] := Random(61) - 30;
Write(a[i]:4);
if a[i]>0 then a[i]:=2*a[i]
else
if a[i]<0 then a[i]:=7
end;
Writeln;
Writeln('После преобразования');
for i := 1 to n do Write(a[i]:4);
Writeln
end.
Тестовое решение:
Элементы массива
-20 15 16 20 0 16 -15 -1 -2 21 -8 -10 4 -24 1
После преобразования
7 30 32 40 0 32 7 7 7 42 7 7 8 7 2
Допустим, первые 5 шаров - синие (всегда рассматривается худший случай)
Допустим, следующие 3 шара - красные
Тогда все оставшиеся шары будут желтыми, и достаточно достать любой из них
5+3+1=9
ответ: 9 шаров.
P.S. Если достать меньшее кол-во, то возможна ситуация, при которой будут не все шары. Например, если достать 8 шаров, возможно что будут только синие и красные. Но если достать 9, то в любом случае среди них будет каждый цвет. Хотя, возможна ситуация, в которой при наличии 3 шаров будут присутствовать шары каждого цвета.