<em>// PascalABC.NET 3.2, сборка 1439 от 09.05.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
var a:=ArrRandom(ReadInteger('n='),-50,50); a.Println;
a.Transform(x->x>0?x*4:x*7); a.Println
end.
<u>Пример</u>
n= 13
-9 23 -29 -36 -10 -20 9 28 26 34 -41 -2 45
-63 92 -203 -252 -70 -140 36 112 104 136 -287 -14 180
{Возможно это можно более просто организовать, однако программа работает :) }
Var a,b,ax,x: integer; flag: boolean;
Begin
Readln(a,b); ax:=a;
If (a>=0) and (b>=0) then flag:=true
else begin a:=abs(a); b:=abs(b); flag:=false; end;
If (a=0) or (b=0) then write('0')
else begin while b > 1 do
begin a:=a+ax; dec(b); end; x:=a;
if flag then write(x) else write(x-x*2); end;
End.
В любой такой последовательности при перестановке двоек и единиц результат не меняется. Например, 121121 и 111122 дадут один и тот же результат. Поэтому из любой последовательности сделаем наименьший номер (т.е. сначала идут все единицы, затем - двойки). Не забудем так же, что 2 и 3 взаимно просты, поэтому при разных количествах единиц и двоек результаты будут различны.
Т.к. всего команд 6, то чисел будет лишь 7:
111111
111112
111122
111222
112222
122222
222222
Ответ: 7
Const nx=30;var n,m,i,s,k,max,min:integer;
z:array[1..nx] of integer;sr:real;
begin
write('введите n');read(n); max:= -100;min:= 100;
for i:=1 to n do begin
z[i]:= random(25)-15;
if max < z[i] then begin max:= z[i];k:= i;end;
if min > z[i] then begin min:= z[i];m:= i;end;
write(z[i]:4);end;
writeln;
s:= z[k]; z[k]:= z[m]; z[m]:= s;
for i:=1 to n do write(z[i]:4);
writeln;writeln('max = ',max,' k =',k );writeln('min = ',min,' m =',m );<span>end.</span>