Program Array129; var a: array [1..40] of integer; B: array [1..20] of integer; C: array [1..20] of integer; temp,M,N,i,j:integer; begin writeln('Введите N (N<=20)'); readln(N); writeln('Значения массива А'); for i:=1 to n do begin write('a[',i,']=');readln(A[i]); B[i]:=i; end; // решение temp:=0; m:=0; // формируем из исходного массива A[] два с длиной серий B[] и значением серий C[] for i:=2 to n do begin inc(temp); if a[i]<>a[i-1] then begin inc(M); B[M]:=temp; C[M]:=a[i-1]; temp:=0; end; end; inc(temp); inc(M); b[M]:=temp; C[M]:=a[i]; // складываем массив A[] согласно задания. temp:=1; for i:=1 to m do begin if b[i]>=b[temp] then begin temp:=i; end; end; inc(b[temp]);
temp:=0; for i:=1 to m do begin for j:=1 to b[i] do begin inc(temp); a[temp]:=c[i]; end; end; Writeln; Writeln('ответ'); Write(' A[]: '); for i:=1 to temp do Write(A[i],' '); end.
var i, n, ic, nc, kc, imax, nmax, kmax: integer; a: V;
begin write('Введите количество чисел N '); readln(n); SetLength(a, n + 1); writeln('Вводите числа'); for i := 0 to n - 1 do read(a[i]); writeln; nmax := -32768; kmax := 0; imax := 0; nc := a[0]; kc := 1; ic := 1; for i := 1 to n - 1 do begin if a[i] = nc then kc := kc + 1 else begin if kc < 3 then begin kc := 1; nc := a[i]; ic := i end else if kmax <= kc then begin kmax := kc; nmax := nc; imax := ic; kc:=1; nc:=a[i]; ic:=i end else begin kc := 1; nc := a[i]; ic := i end end end; if kmax <= kc then begin kmax := kc; nmax := nc; imax := ic end; writeln('Самая длинная серия содержит ', kmax, ' чисел ', nmax); for i:=n downto imax+kmax+1 do a[i]:=a[i-1]; a[imax+kmax]:=nmax; writeln('Модифицированная строка'); for i:=0 to n do write(a[i]:2) end. Тестовое решение
Введите количество чисел N 30 Вводите числа 1 2 2 3 4 4 4 5 5 5 6 8 6 6 6 4 8 8 8 8 8 8 3 3 3 3 1 2 3 3 3
Самая длинная серия содержит 6 чисел 8 Модифицированная строка 1 2 2 3 4 4 4 5 5 5 6 8 6 6 6 4 8 8 8 8 8 8 8 3 3 3 3 1 2 3 3
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrRandom(ReadInteger('n='),-130,50); a.Println;
a.Aggregate(BigInteger(1),(i,j)->i*j).Println
end.
Пример
n= 20
-49 -72 -10 -96 -36 -82 -26 -65 -121 -31 3 -102 49 40 -43 -84 -98 -109 -68 -20
-1994649777584318358814520770560000