riešenie
- Najprv predpokladajme, že vstupná postupnosť je: a b c d e f
g h. Po dotrasovaní programu dostaneme: b d h g a e c f. Zrejme,
výstupom je presne táto permutácia vstupu. Aby sme
dostali výstupnú postupnosť 1 2 3 4 5 6 7 8, na vstupe treba
zadať b=1, d=2, h=3, g=4, a=5, e=6, c=7, f=7, t.j. 5 1 7 2 6 8 4 3.
- Metóda: do p sa najprv v prvom cykle vypočíta
(počet 1) + (počet 2)*(N+1), potom v druhom cykle sa od konca zapĺňa
pole a najprv 2 (kým je p>N) a potom 1 (kým
je p>0):
var i,p:integer;
a:array[1..N] of 0..2;
begin
p:=0;
for i:=1 to N do
begin
p:=p+a[i]; if a[i]=2 then p:=p+N-1;
a[i]:=0;
end;
i:=N;
while p>0 do
begin
if p>N then
begin a[i]:=2; p:=p-N end
else a[i]:=1;
p:=p-1; i:=i-1;
end;
end;
-
- 14, lebo treba ísť 7 dole a 7 vpravo
- kombinačné číslo (14 nad 7) = 3432
- napr. riešenie
var
p:array[1..50] of 1..20;
i,j:integer;
begin
for i:=20 downto 1 do begin
for j:=1 to 50 do
if p[j]>=i then write('*')
else write(' ');
writeln;
end;
end;