На каждом шаге имеет смысл менять два горшка с разными цветами. Поэтому всё получится, если роз, стоящих на чётных местах, будет столько же, сколько и фиалок на нечётных. При этом если тех и других k, то всего нужно k перестановок. Код (PascalABC.NET 3.2): begin var n := ReadInteger(); var roses := new integer[n]; var count_roses := 0; var violets := new integer[n]; var count_violets := 0; for var i := 1 to n do begin if ReadInteger() = i mod 2 then if i mod 2 = 0 then begin roses[count_roses] := i; inc(count_roses); end else begin violets[count_violets] := i; inc(count_violets); end; end; if count_roses = count_violets then begin writeln(count_roses); for var i := 0 to count_roses - 1 do println(roses[i], violets[i]); end else write(-1) end.
Const maxn=15; var a: array[1..maxn] of integer; skv,prod,gr,i: integer; begin writeln('введите ',maxn,' чисел'); skv:=0; prod:=1; gr:=0; for i:=1 to maxn do begin write(i,': '); readln(a[i]); if a[i]<0 then skv:=skv+a[i]*a[i]; if (a[i] mod 2 = 0) and (i mod 2 = 0) then prod:=prod*a[i]; if abs(a[i])>100 then gr:=gr+1; end; writeln('сумма квадратов отрицательных: ',skv); writeln('произведение четных на четных местах: ',prod); writeln('больше 100 по модулю: ',gr); end.
введите 15 чисел 1: 151 2: -231 3: 104 4: 19 5: 36 6: -112 7: 5 8: 8 9: 11 10: 13 11: 45 12: 5 13: 6 14: 17 15: 19 сумма квадратов отрицательных: 65905 произведение четных на четных местах: -896 больше 100 по модулю: 4
Код (PascalABC.NET 3.2):
begin
var n := ReadInteger();
var roses := new integer[n];
var count_roses := 0;
var violets := new integer[n];
var count_violets := 0;
for var i := 1 to n do
begin
if ReadInteger() = i mod 2 then
if i mod 2 = 0 then
begin
roses[count_roses] := i;
inc(count_roses);
end
else
begin
violets[count_violets] := i;
inc(count_violets);
end;
end;
if count_roses = count_violets then
begin
writeln(count_roses);
for var i := 0 to count_roses - 1 do
println(roses[i], violets[i]);
end
else
write(-1)
end.
var a: array[1..maxn] of integer;
skv,prod,gr,i: integer;
begin
writeln('введите ',maxn,' чисел');
skv:=0; prod:=1;
gr:=0;
for i:=1 to maxn do
begin
write(i,': '); readln(a[i]);
if a[i]<0 then skv:=skv+a[i]*a[i];
if (a[i] mod 2 = 0) and (i mod 2 = 0) then
prod:=prod*a[i];
if abs(a[i])>100 then gr:=gr+1;
end;
writeln('сумма квадратов отрицательных: ',skv);
writeln('произведение четных на четных местах: ',prod);
writeln('больше 100 по модулю: ',gr);
end.
введите 15 чисел
1: 151
2: -231
3: 104
4: 19
5: 36
6: -112
7: 5
8: 8
9: 11
10: 13
11: 45
12: 5
13: 6
14: 17
15: 19
сумма квадратов отрицательных: 65905
произведение четных на четных местах: -896
больше 100 по модулю: 4