Const n=10;
var
a: array[1..n] of integer;
p,k: integer;
i: byte;
begin
randomize;
p:=1; k:=0;
for i:=1 to n do begin
a[i]:=random(21);
if (a[i]>0) and (a[i] mod 6 =0) then begin
p:=p*a[i];
k:=k+1;
end;
end;
println (a);
if k>1 then writeln ('Произведение элементов, кратных 6, = ',p)
else if k=1 then writeln ('Найден всего 1 элемент, кратный 6, - ',p)
else writeln ('Нет элементов, кратных 6')
end.
-----------------------------------
Примеры:
15 7 14 14 1 17 4 2 20 10
Нет элементов, кратных 6
12 11 16 1 20 6 0 8 7 20
Произведение элементов, кратных 6, = 72
14 6 8 3 15 7 14 5 19 15
Найден всего 1 элемент, кратный 6, - 6
CBA - не подходит, так как на третьем месте стоит A;
EED - подходит;
AED - подходит;
CEC - подходит;
EBB - подходит;
BAE - не подходит, так как на первом месте стоит B;
CEA - не подходит, так как на третьем месте стоит A;
ABE - подходит;
CBD - подходит;
Ответ: 6 цепочек.
Непростая задача...
const
n = 16;
type
R = record
v: integer;
p: integer
end;
mR = array[1..n] of R;
function SummOfDigits(n: integer): integer;
{ Сумма цифр в трехзначном числе }
begin
SummOfDigits := (n div 100) + ((n mod 100) div 10) + (n mod 10)
end;
procedure Swp(var a, b: R);
{ Меняет местами элементы a и b }
var
t: R;
begin
t.v := a.v; t.p := a.p;
a.v := b.v; a.p := b.p;
b.v := t.v; b.p := t.p
end;
procedure Shell(var a: mR; n: integer);
{ сортировка методом Шелла }
var
i, j, step: integer;
begin
step := n div 2;
while step > 0 do
begin
for j := n - step downto 1 do
begin
i := j;
while i <= n - step do
begin
if a[i].v > a[i + step].v then Swp(a[i], a[i + step]);
i := i + step
end
end;
step := step div 2
end
end;
var
a: array[1..n] of integer;
b: mR;
i: integer;
begin
Randomize;
Writeln('*** Исходные элементы массива ***');
for i := 1 to n do
begin
a[i] := Random(900) + 100;
b[i].v := SummOfDigits(a[i]);
b[i].p := i;
Write(a[i]:4)
end;
Writeln;
Shell(b, n);
Writeln('*** Упорядоченные по возрастанию суммы цифр элементы массива ***');
for i := 1 to n do
begin
Write(a[b[i].p]:4)
end;
Writeln
end.
Тестовое решение:
*** Исходные элементы массива ***
862 244 599 379 595 840 551 151 614 383 185 893 131 172 139 256
*** Упорядоченные по возрастанию суммы цифр элементы массива ***
131 151 244 172 551 614 840 139 256 185 383 862 595 379 893 599
1)program gt;
var a:array[1..100,1..100]of integer;
b:array[1..100]of integer;
n,m,s,i,j:integer;
begin
readln(n,m);
for i:=1 to n do
for j:=1 to m do
read(a[i,j]);
for j:=1 to m do
begin
s:=0;
for i:=1 to n do
s:=s+a[i,j];
b[j]:=s;
end;
for i:=1 to m do
write(b[i],' ');
end.
2)
program gt;
var a:array[1..100,1..100]of integer;
n,m,s,i,j:integer;
begin
readln(n,m);
randomize;
for i:=1 to n do
begin
for j:=1 to m do
begin
if(i mod 2=0)then a[i,j]:=0 else a[i,j]:=random(100);
write(a[i,j],' ');
writeln;
end;
end.
Для записи результата одного спортсмена требуется log(2)12≈4 бита (2^4=16). Объем информации о финише 2/3 спортсменов = 4*12*2/3 = 32 бита = 4 байта.