Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
16
Добавлен:
10.12.2013
Размер:
51.21 Кб
Скачать
ѓ« ў  1. ЏҐаҐ¬Ґ­­лҐ, ўла ¦Ґ­Ёп, ЇаЁбў Ёў ­Ёп.

1.1. ‡ ¤ зЁ ЎҐ§ ¬ ббЁў®ў

1.1.1. „ ­л ¤ўҐ жҐ«лҐ ЇҐаҐ¬Ґ­­лҐ a, b. ‘®бв ўЁвм да Ј¬Ґ­в
Їа®Ја ¬¬л, Ї®б«Ґ ЁбЇ®«­Ґ­Ёп Є®в®а®Ј® §­ зҐ­Ёп ЇҐаҐ¬Ґ­­ле Ї®¬Ґ­п-
«Ёбм Ўл ¬Ґбв ¬Ё (­®ў®Ґ §­ зҐ­ЁҐ a а ў­® бв а®¬г §­ зҐ­Ёо b Ё ­ -
®Ў®а®в).

ђҐиҐ­ЁҐ. ‚ўҐ¤Ґ¬ ¤®Ї®«­ЁвҐ«м­го 楫го ЇҐаҐ¬Ґ­­го t.
t := a;
a := b;
b := t;
Џ®ЇлвЄ  ®Ў®©вЁбм ЎҐ§ ¤®Ї®«­ЁвҐ«м­®© ЇҐаҐ¬Ґ­­®©, ­ ЇЁб ў
a := b;
b := a;
­Ґ ЇаЁў®¤Ёв Є 楫Ё (ЎҐ§ў®§ўа в­® гва зЁў Ґвбп ­ з «м­®Ґ §­ зҐ­ЁҐ
ЇҐаҐ¬Ґ­­®© a).

1.1.2. ђҐиЁвм ЇаҐ¤л¤гйго § ¤ зг, ­Ґ ЁбЇ®«м§гп ¤®Ї®«­Ё-
⥫м­ле ЇҐаҐ¬Ґ­­ле (Ё ЇаҐ¤Ї®« Ј п, зв® §­ зҐ­Ёп¬Ё 楫ле ЇҐаҐ¬Ґ­-
­ле ¬®Јгв Ўлвм Їа®Ё§ў®«м­лҐ жҐ«лҐ зЁб« ).

ђҐиҐ­ЁҐ. (Ќ з «м­лҐ §­ зҐ­Ёп a Ё b ®Ў®§­ зЁ¬ a0, b0.)
a := a + b; {a = a0 + b0, b = b0}
b := a - b; {a = a0 + b0, b = a0}
a := a - b; {a = b0, b = a0}

1.1.3. „ ­® 楫®Ґ зЁб«®   Ё ­ вга «м­®Ґ (楫®Ґ ­Ґ®ваЁж -
⥫쭮Ґ) зЁб«® n. ‚лзЁб«Ёвм   ў б⥯Ґ­Ё n. „агЈЁ¬Ё б«®ў ¬Ё, ­Ґ-
®Ўе®¤Ё¬® б®бв ўЁвм Їа®Ја ¬¬г, ЇаЁ ЁбЇ®«­Ґ­ЁЁ Є®в®а®© §­ зҐ­Ёп
ЇҐаҐ¬Ґ­­ле   Ё n ­Ґ ¬Ґ­повбп,   §­ зҐ­ЁҐ ­ҐЄ®в®а®© ¤агЈ®© ЇҐаҐ-
¬Ґ­­®© (­ ЇаЁ¬Ґа, b) бв ­®ўЁвбп а ў­л¬   ў б⥯Ґ­Ё n. (ЏаЁ н⮬
а §аҐи Ґвбп ЁбЇ®«м§®ў вм Ё ¤агЈЁҐ ЇҐаҐ¬Ґ­­лҐ.)

ђҐиҐ­ЁҐ. ‚ўҐ¤Ґ¬ 楫го ЇҐаҐ¬Ґ­­го k, Є®в®а п ¬Ґ­пҐвбп ®в 0
¤® n, ЇаЁзҐ¬ Ї®¤¤Ґа¦Ёў Ґвбп в Є®Ґ бў®©бвў®: b = (a ў б⥯Ґ­Ё
k).

k := 0; b := 1;
{b = a ў б⥯Ґ­Ё k}
while k <> n do begin
| k := k + 1;
| b := b * a;
end;

„агЈ®Ґ аҐиҐ­ЁҐ в®© ¦Ґ § ¤ зЁ:

k := n; b := 1;
{a ў б⥯Ґ­Ё n = b * (a ў б⥯Ґ­Ё k)}
while k <> 0 do begin
| k := k - 1;
| b := b * a;
end;

1.1.4. ђҐиЁвм ЇаҐ¤л¤гйго § ¤ зг, Ґб«Ё вॡгҐвбп, зв®Ўл зЁб-
«® ¤Ґ©бвўЁ© (ўлЇ®«­пҐ¬ле ®ЇҐа в®а®ў ЇаЁбў Ёў ­Ёп) Ўл«® Ї®ап¤Є 
log n (в® Ґбвм ­Ґ ЇаҐў®б室Ё«® Ўл C*log n ¤«п ­ҐЄ®в®а®© Є®­бв ­-
вл C; log n - нв® б⥯Ґ­м, ў Є®в®аго ­г¦­® ў®§ўҐбвЁ 2, зв®Ўл Ї®-
«гзЁвм n).

ђҐиҐ­ЁҐ. ‚­ҐбҐ¬ ­ҐЄ®в®алҐ Ё§¬Ґ­Ґ­Ёп ў® ўв®а®Ґ Ё§ ЇаҐ¤«®¦Ґ­-
­ле аҐиҐ­Ё© ЇаҐ¤л¤г饩 § ¤ зЁ:

k := n; b := 1; c:=a;
{a ў б⥯Ґ­Ё n = b * (c ў б⥯Ґ­Ё k)}
while k <> 0 do begin
| if k mod 2 = 0 then begin
| | k:= k div 2;
| | c:= c*c;
| end else begin
| | k := k - 1;
| | b := b * c;
| end;
end;

Љ ¦¤л© ўв®а®© а § (­Ґ ०Ґ) Ўг¤Ґв ўлЇ®«­пвмбп ЇҐаўл© ў аЁ ­в
®ЇҐа в®а  ўлЎ®а  (Ґб«Ё k ­ҐзҐв­®, в® Ї®б«Ґ ўлзЁв ­Ёп Ґ¤Ё­Ёжл
бв ­®ўЁвбп зҐв­л¬), в Є зв® §  ¤ў  жЁЄ«  ўҐ«ЁзЁ­  k 㬥­ми Ґвбп
Ї® Єа ©­Ґ© ¬ҐаҐ ў¤ў®Ґ.

1.1.5. „ ­л ­ вга «м­лҐ зЁб«   , b. ‚лзЁб«Ёвм Їа®Ё§ўҐ¤Ґ­ЁҐ
 *b, ЁбЇ®«м§гп ў Їа®Ја ¬¬Ґ «Ёим ®ЇҐа жЁЁ +, -, =, <>.

ђҐиҐ­ЁҐ.
var a, b, c, k : integer;
k := 0; c := 0;
{Ё­ў аЁ ­в: c = a * k}
while k <> b do begin
| k := k + 1;
| c := c + a;
end;
{c = a * k Ё k = b, б«Ґ¤®ў вҐ«м­®, c = a * b}

1.1.6. „ ­л ­ вга «м­лҐ зЁб«    Ё b. ‚лзЁб«Ёвм Ёе б㬬г
 +b. €бЇ®«м§®ў вм ®ЇҐа в®ал ЇаЁбў Ёў ­Ёп «Ёим ўЁ¤ 

<ЇҐаҐ¬Ґ­­ п1> := <ЇҐаҐ¬Ґ­­ п2>,
<ЇҐаҐ¬Ґ­­ п> := <зЁб«®>,
<ЇҐаҐ¬Ґ­­ п1> := <ЇҐаҐ¬Ґ­­ п2> + 1.

ђҐиҐ­ЁҐ.
...
{Ё­ў аЁ ­в: c = a + k}
...

1.1.7. „ ­® ­ вга «м­®Ґ (楫®Ґ ­Ґ®ваЁж вҐ«м­®Ґ) зЁб«®   Ё
楫®Ґ Ї®«®¦ЁвҐ«м­®Ґ зЁб«® d. ‚лзЁб«Ёвм з бв­®Ґ q Ё ®бв в®Є r ЇаЁ
¤Ґ«Ґ­ЁЁ   ­  d, ­Ґ ЁбЇ®«м§гп ®ЇҐа жЁ© div Ё mod.

ђҐиҐ­ЁҐ. ‘®Ј« б­® ®ЇаҐ¤Ґ«Ґ­Ёо, a = q * d + r, 0 <= r < d.

{a >= 0; d > 0}
r := a; q := 0;
{Ё­ў аЁ ­в: a = q * d + r, 0 <= r}
while not (r < d) do begin
| {r >= d}
| r := r - d; {r >= 0}
| q := q + 1;
end;

1.1.8. „ ­® ­ вга «м­®Ґ n, ўлзЁб«Ёвм n!
(0!=1, n! = n * (n-1)!).

1.1.9. Џ®б«Ґ¤®ў вҐ«м­®бвм ”ЁЎ®­ ззЁ ®ЇаҐ¤Ґ«пҐвбп в Є:
a(0)= 1, a(1) = 1, a(k) = a(k-1) + a(k-2) ЇаЁ k >= 2. „ ­® n,
ўлзЁб«Ёвм a(n).

1.1.10. ’  ¦Ґ § ¤ з , Ґб«Ё вॡгҐвбп, зв®Ўл зЁб«® ®ЇҐа жЁ©
Ўл«® Їа®Ї®ажЁ®­ «м­® log n. (ЏҐаҐ¬Ґ­­лҐ ¤®«¦­л Ўлвм 楫®зЁб«Ґ­-
­л¬Ё.)

“Є § ­ЁҐ. Џ а  б®бҐ¤­Ёе зЁбҐ« ”ЁЎ®­ ззЁ Ї®«гз Ґвбп Ё§ ЇаҐ-
¤л¤г饩 г¬­®¦Ґ­ЁҐ¬ ­  ¬ ваЁжг
|1 1|
|1 0|
в Є зв® § ¤ з  бў®¤Ёвбп Є ў®§ўҐ¤Ґ­Ёо ¬ ваЁжл ў б⥯Ґ­м n. ќв®
¬®¦­® ᤥ« вм §  C*log n ¤Ґ©бвўЁ© ⥬ ¦Ґ бЇ®б®Ў®¬, зв® Ё ¤«п зЁ-
ᥫ.

1.1.11. „ ­® ­ вга «м­®Ґ n, ўлзЁб«Ёвм 1/0!+1/1!+...+1/n!.

1.1.12. ’® ¦Ґ, Ґб«Ё вॡгҐвбп, зв®Ўл Є®«ЁзҐбвў® ®ЇҐа жЁ©
(ўлЇ®«­Ґ­­ле Є®¬ ­¤ ЇаЁбў Ёў ­Ёп) Ўл«® Ўл ­Ґ Ў®«ҐҐ C*n ¤«п ­Ґ-
Є®в®а®© Є®­бв ­вл ‘.
ђҐиҐ­ЁҐ. €­ў аЁ ­в: sum = 1/1! +...+ 1/k!, last = 1/k!
(ў ¦­® ­Ґ ўлзЁб«пвм § ­®ў® Є ¦¤л© а § k!).

1.1.13. „ ­л ¤ў  ­ вга «м­ле зЁб«  a Ё b, ­Ґ а ў­лҐ ­г«о
®¤­®ўаҐ¬Ґ­­®. ‚лзЁб«Ёвм ЌЋ„ (a,b) - ­ ЁЎ®«миЁ© ®ЎйЁ© ¤Ґ«ЁвҐ«м  
Ё b.

ђҐиҐ­ЁҐ (1 ў аЁ ­в).

if a > b then begin
| k := a;
end else begin
| k := b;
end;
{k = max (a,b)}
{Ё­ў аЁ ­в: ­ЁЄ Є®Ґ зЁб«®, Ў®«м襥 k, ­Ґ пў«пҐвбп ®Ў-
йЁ¬ ¤Ґ«ЁвҐ«Ґ¬}
while not (((a mod k)=0) and ((b mod k)=0)) do begin
| k := k - 1;
end;
{k - ®ЎйЁ© ¤Ґ«ЁвҐ«м, Ў®«миЁҐ - ­Ґв}

(2 ў аЁ ­в -  «Ј®аЁв¬ …ўЄ«Ё¤ ). Ѓг¤Ґ¬ бзЁв вм , зв® ЌЋ„
(0,0) = 0. ’®Ј¤  ЌЋ„ (a,b) = ЌЋ„ (a-b,b) = ЌЋ„ (a,b-a); ЌЋ„
(a,0) = ЌЋ„ (0,a) = a ¤«п ўбҐе a,b>=0.

m := a; n := b;
{Ё­ў аЁ ­в: ЌЋ„ (a,b) = ЌЋ„ (m,n); m,n >= 0 }
while not ((m=0) or (n=0)) do begin
| if m >= n then begin
| | m := m - n;
| end else begin
| | n := n - m;
| end;
end;
if m = 0 then begin
| k := n;
end else begin
| k := m;
end;

1.1.14. Ќ ЇЁб вм ¬®¤ЁдЁжЁа®ў ­­л© ў аЁ ­в  «Ј®аЁв¬  …ўЄ«Ё-
¤ , ЁбЇ®«м§гойЁ© ᮮ⭮襭Ёп ЌЋ„ (a, b) = ЌЋ„ (a mod b, b) ЇаЁ
a >= b, ЌЋ„ (a, b) = ЌЋ„ (a, b mod a) ЇаЁ b >= a.

1.1.15. „ ­л ­ вга «м­лҐ   Ё b, ­Ґ а ў­лҐ 0 ®¤­®ўаҐ¬Ґ­­®.
Ќ ©вЁ d = ЌЋ„ (a,b) Ё в ЄЁҐ жҐ«лҐ x Ё y, зв® d = a*x + b*y.

ђҐиҐ­ЁҐ. „®Ў ўЁ¬ ў  «Ј®аЁв¬ …ўЄ«Ё¤  ЇҐаҐ¬Ґ­­лҐ p, q, r, s
Ё ўЇЁиҐ¬ ў Ё­ў аЁ ­в гб«®ўЁп m = p*a + q*b; n = r*a + s*b.

m:=a; n:=b; p := 1; q := 0; r := 0; s := 1;
{Ё­ў аЁ ­в: ЌЋ„ (a,b) = ЌЋ„ (m,n); m,n >= 0
m = p*a + q*b; n = r*a + s*b.}
while not ((m=0) or (n=0)) do begin
| if m >= n then begin
| | m := m - n; p := p - r; q := q - s;
| end else begin
| | n := n - m; r := r - p; s := s - q;
| end;
end;
if m = 0 then begin
| k :=n; x := r; y := s;
end else begin
| k := m; x := p; y := q;
end;

1.1.16. ђҐиЁвм ЇаҐ¤л¤гйго § ¤ зг, ЁбЇ®«м§гп ў  «Ј®аЁв¬Ґ
…ўЄ«Ё¤  ¤Ґ«Ґ­ЁҐ б ®бв вЄ®¬.

1.1.17. (ќ.„Ґ©Єбва ). „®Ў ўЁ¬ ў  «Ј®аЁв¬ …ўЄ«Ё¤  ¤®Ї®«­Ё-
⥫м­лҐ ЇҐаҐ¬Ґ­­лҐ u, v, z:

m := a; n := b; u := b; v := a;
{Ё­ў аЁ ­в: ЌЋ„ (a,b) = ЌЋ„ (m,n); m,n >= 0 }
while not ((m=0) or (n=0)) do begin
| if m >= n then begin
| | m := m - n; v := v + u;
| end else begin
| | n := n - m; u := u + v;
| end;
end;
if m = 0 then begin
| z:= v;
end else begin {n=0}
| z:= u;
end;

„®Є § вм, зв® Ї®б«Ґ ЁбЇ®«­Ґ­Ёп  «Ј®аЁв¬  z а ў­® г¤ў®Ґ­­®¬г ­ -
Ё¬Ґ­м襬㠮ЎйҐ¬г Єа в­®¬г зЁбҐ« a, b: z = 2 * ЌЋЉ (a,b).

ђҐиҐ­ЁҐ. ‡ ¬ҐвЁ¬, зв® ўҐ«ЁзЁ­  m*u + n*v ­Ґ ¬Ґ­пҐвбп ў 室Ґ
ўлЇ®«­Ґ­Ёп  «Ј®аЁв¬ . Ћбв Ґвбп ў®бЇ®«м§®ў вмбп ⥬, зв® ў­ з «Ґ
®­  а ў­  2*a*b Ё зв® ЌЋ„ (a, b) * ЌЋЉ (a, b) = a*b.

1.1.18. Ќ ЇЁб вм ў аЁ ­в  «Ј®аЁв¬  …ўЄ«Ё¤ , ЁбЇ®«м§гойЁ©
ᮮ⭮襭Ёп
ЌЋ„(2*a, 2*b) = 2*ЌЋ„(a,b)
ЌЋ„(2*a, b) = ЌЋ„(a,b) ЇаЁ ­ҐзҐв­®¬ b,
­Ґ ўЄ«оз ойЁ© ¤Ґ«Ґ­Ёп б ®бв вЄ®¬,   ЁбЇ®«м§гойЁ© «Ёим ¤Ґ«Ґ­ЁҐ ­ 
2 Ё Їа®ўҐаЄг зҐв­®бвЁ. (—Ёб«® ¤Ґ©бвўЁ© ¤®«¦­® Ўлвм Ї®ап¤Є  log k
¤«п Ёб室­ле ¤ ­­ле, ­Ґ ЇаҐў®б室пйЁе k.)

ђҐиҐ­ЁҐ.

m:= a; n:=b; d:=1;
{ЌЋ„(a,b) = d * ЌЋ„(m,n)}
while not ((m=0) or (n=0)) do begin
| if (m mod 2 = 0) and (n mod 2 = 0) then begin
| | d:= d*2; m:= m div 2; n:= n div 2;
| end else if (m mod 2 = 0) and (n mod 2 = 1) then begin
| | m:= m div 2;
| end else if (m mod 2 = 1) and (n mod 2 = 0) then begin
| | n:= n div 2;
| end else if (m mod 2=1) and (n mod 2=1) and (m>=n)then begin
| | m:= m-n;
| end else if (m mod 2=1) and (n mod 2=1) and (m<=n)then begin
| | n:= n-m;
| end;
end;
{m=0 => ®вўҐв=d*n; n=0 => ®вўҐв=d*m}

ЋжҐ­Є  зЁб«  ¤Ґ©бвўЁ©: Є ¦¤®Ґ ўв®а®Ґ ¤Ґ©бвўЁҐ ¤Ґ«Ёв е®вп Ўл ®¤­®
Ё§ зЁбҐ« m Ё n Ї®Ї®« ¬.

1.1.19. „®Ї®«­Ёвм  «Ј®аЁв¬ ЇаҐ¤л¤г饩 § ¤ зЁ Ї®ЁбЄ®¬ x Ё y,
¤«п Є®в®але ax+by=ЌЋ„(a,b).

ђҐиҐ­ЁҐ. (€¤Ґп б®®ЎйҐ­  „.‡ў®­ЄЁ­л¬) ЏаҐ¦¤Ґ ўбҐЈ® § ¬ҐвЁ¬,
зв® ®¤­®ўаҐ¬Ґ­®Ґ ¤Ґ«Ґ­ЁҐ a Ё b Ї®Ї®« ¬ ­Ґ ¬Ґ­пҐв ЁбЄ®¬ле x Ё y.
Џ®н⮬㠬®¦­® бзЁв вм, зв® б б ¬®Ј® ­ з «  ®¤­® Ё§ зЁбҐ« a Ё b
­ҐзҐв­®. (ќв® бў®©бвў® Ўг¤Ґв б®еа ­пвмбп Ё ¤ «ҐҐ.)
’ҐЇҐам Ї®Їлв Ґ¬бп, Є Є Ё а ­миҐ, еа ­Ёвм в ЄЁҐ зЁб« 
p,q,r,s, зв®
m = ap + bq
n = ar + bs
Џа®Ў«Ґ¬  ў ⮬, зв® ЇаЁ ¤Ґ«Ґ­ЁЁ, бЄ ¦Ґ¬, m ­  2 ­ ¤® а §¤Ґ«Ёвм p
Ё q ­  2, Ё ®­Ё ЇҐаҐбв ­гв Ўлвм 楫묨 (  бв ­гв ¤ў®Ёз­®-а жЁ-
®­ «м­л¬Ё). „ў®Ёз­®-а жЁ®­ «м­®Ґ зЁб«® ҐбвҐб⢥­­® еа ­Ёвм ў ўЁ-
¤Ґ Ї ал (зЁб«ЁвҐ«м, Ї®Є § вҐ«м б⥯Ґ­Ё ¤ў®©ЄЁ ў §­ ¬Ґ­ вҐ«Ґ). ‚
Ёв®ЈҐ ¬л Ї®«гз Ґ¬ d ў ўЁ¤Ґ Є®¬ЎЁ­ жЁЁ a Ё b б ¤ў®Ёз­®-а жЁ-
®­ «м­л¬Ё Є®нддЁжЁҐ­в ¬Ё. €­л¬Ё б«®ў ¬Ё, ¬л Ё¬ҐҐ¬
(2 ў б⥯Ґ­Ё i)* d = ax + by
¤«п ­ҐЄ®в®але 楫ле x,y Ё ­ вга «м­®Ј® i. —в® ¤Ґ« вм, Ґб«Ё i >
1? …б«Ё x Ё y зсв­л, в® ­  2 ¬®¦­® б®Єа вЁвм. …б«Ё нв® ­Ґ в Є,
Ї®«®¦Ґ­ЁҐ ¬®¦­® ЁбЇа ўЁвм ЇаҐ®Ўа §®ў ­ЁҐ¬
x := x + b
y := y - a
(®­® ­Ґ ¬Ґ­пҐв ax+by). “ЎҐ¤Ё¬бп ў н⮬. Ќ Ї®¬­Ё¬, зв® ¬л бзЁв -
Ґ¬, зв® ®¤­® Ё§ зЁбҐ« a Ё b ­Ґзсв­®. Џгбвм нв® Ўг¤Ґв a. …б«Ё ЇаЁ
н⮬ y зсв­®, в® Ё x ¤®«¦­® Ўлвм зсв­л¬ (Ё­ зҐ ax+by Ўг¤Ґв ­Ґ-
зсв­л¬). Ђ ЇаЁ ­Ґзсв­®¬ y ўлзЁв ­ЁҐ Ё§ ­ҐЈ® ­сзҐв­®Ј® a ¤Ґ« Ґв y
зсв­л¬.

1.1.20. ‘®бв ўЁвм Їа®Ја ¬¬г, ЇҐз в ойго Єў ¤а вл ўбҐе ­ вг-
а «м­ле зЁбҐ« ®в 0 ¤® § ¤ ­­®Ј® ­ вга «м­®Ј® n.

ђҐиҐ­ЁҐ.

k:=0;
writeln (k*k);
{Ё­ў аЁ ­в: k<=n, ­ ЇҐз в ­л ўбҐ
Єў ¤а вл ¤® k ўЄ«озЁвҐ«м­®}
while not (k=n) do begin
| k:=k+1;
| writeln (k*k);
end;

1.1.21. ’  ¦Ґ § ¤ з , ­® а §аҐи Ґвбп ЁбЇ®«м§®ў вм Ё§  аЁд-
¬ҐвЁзҐбЄЁе ®ЇҐа жЁ© «Ёим б«®¦Ґ­ЁҐ Ё ўлзЁв ­ЁҐ, ЇаЁзҐ¬ ®ЎйҐҐ зЁб-
«® ¤Ґ©бвўЁ© ¤®«¦­® Ўлвм Ї®ап¤Є  n.

ђҐиҐ­ЁҐ. ‚ўҐ¤Ґ¬ ЇҐаҐ¬Ґ­­го k_square (square - Єў ¤а в),
бўп§ ­­го б k ᮮ⭮襭ЁҐ¬ k_square = k*k:

k := 0; k_square := 0;
writeln (k_square);
while not (k = n) do begin
| k := k + 1;
| {k_square = (k-1) * (k-1) = k*k - 2*k + 1}
| k_square := k_square + k + k - 1;
| writeln (k_square);
end;

1.1.22. ‘®бв ўЁвм Їа®Ја ¬¬г, ЇҐз в ойго а §«®¦Ґ­ЁҐ ­  Їа®б-
влҐ ¬­®¦ЁвҐ«Ё § ¤ ­­®Ј® ­ вга «м­®Ј® зЁб«  n > 0 (¤агЈЁ¬Ё б«®ў -
¬Ё, вॡгҐвбп ЇҐз в вм в®«мЄ® Їа®бвлҐ зЁб«  Ё Їа®Ё§ўҐ¤Ґ­ЁҐ ­ ЇҐ-
з в ­­ле зЁбҐ« ¤®«¦­® Ўлвм а ў­® n; Ґб«Ё n = 1, ЇҐз в вм ­ЁзҐЈ®
­Ґ ­ ¤®).

ђҐиҐ­ЁҐ (1 ў аЁ ­в).

k := n;
{Ё­ў аЁ ­в: Їа®Ё§ўҐ¤Ґ­ЁҐ ­ ЇҐз в ­­ле зЁбҐ« Ё k а ў­®
n, ­ ЇҐз в ­л в®«мЄ® Їа®бвлҐ зЁб« }
while not (k = 1) do begin
| l := 2;
| {Ё­ў аЁ ­в: k ­Ґ Ё¬ҐҐв ¤Ґ«ЁвҐ«Ґ© ў Ё­вҐаў «Ґ (1,l)}
| while k mod l <> 0 do begin
| | l := l + 1;
| end;
| {l - ­ Ё¬Ґ­миЁ© ¤Ґ«ЁвҐ«м k, Ў®«миЁ© 1, б«Ґ¤®ў вҐ«м­®,
| Їа®бв®©}
| writeln (l);
| k:=k div l;
end;

(2 ў аЁ ­в).

k := n; l := 2;
{Їа®Ё§ўҐ¤Ґ­ЁҐ k Ё ­ ЇҐз в ­­ле зЁбҐ« а ў­® n; ­ ЇҐз -
в ­­лҐ зЁб«  Їа®бвл; k ­Ґ Ё¬ҐҐв ¤Ґ«ЁвҐ«Ґ©, ¬Ґ­миЁе l}
while not (k = 1) do begin
| if k mod l = 0 then begin
| | {k ¤Ґ«Ёвбп ­  l Ё ­Ґ Ё¬ҐҐв ¤Ґ«ЁвҐ«Ґ©,
| | ¬Ґ­миЁе l, §­ зЁв, l Їа®бв®}
| | k := k div l;
| | writeln (l);
| end else begin
| | { k ­Ґ ¤Ґ«Ёвбп ­  l }
| | l := l + 1;
| end;
end;

1.1.23. ‘®бв ўЁвм Їа®Ја ¬¬г аҐиҐ­Ёп ЇаҐ¤л¤г饩 § ¤ зЁ, Ёб-
Ї®«м§гойго в®в д Єв, зв® б®бв ў­®Ґ зЁб«® Ё¬ҐҐв ¤Ґ«ЁвҐ«м, ­Ґ
ЇаҐў®б室пйЁ© Єў ¤а в­®Ј® Є®а­п Ё§ нв®Ј® зЁб« .

ђҐиҐ­ЁҐ. ‚® ўв®а®¬ ў аЁ ­вҐ аҐиҐ­Ёп ў¬Ґбв® l:=l+1 ¬®¦­® ­ -
ЇЁб вм

if l*l > k then begin
| l:=k;
end else begin
| l:=l+1;
end;

1.1.24. Џа®ўҐаЁвм, пў«пҐвбп «Ё § ¤ ­­®Ґ ­ вга «м­®Ґ зЁб«®
n > 1 Їа®бвл¬.

1.1.25. („«п §­ Є®¬ле б ®б­®ў ¬Ё  «ЈҐЎал). „ ­® 楫®Ґ Ј -
гбб®ў® зЁб«® n + mi (ЇаЁ­ ¤«Ґ¦ йҐҐ Z[i]). (a) Џа®ўҐаЁвм, пў«п-
Ґвбп «Ё ®­® Їа®бвл¬ (ў Z[i]); (Ў) ­ ЇҐз в вм ҐЈ® а §«®¦Ґ­ЁҐ ­ 
Їа®бвлҐ (ў Z[i]) ¬­®¦ЁвҐ«Ё.

1.1.26. ђ §аҐиЁ¬ ЁбЇ®«м§®ў вм Є®¬ ­¤л write (i) «Ёим ЇаЁ i
= 0,1,2,...,9. ‘®бв ўЁвм Їа®Ја ¬¬г, ЇҐз в ойго ¤ҐбпвЁз­го § -
ЇЁбм § ¤ ­­®Ј® ­ вга «м­®Ј® зЁб«  n > 0. (‘«гз © n = 0 пўЁ«бп
Ўл ­ҐЄ®в®ал¬ ЁбЄ«о祭ЁҐ¬, в Є Є Є ®Ўлз­® ­г«Ё ў ­ з «Ґ зЁб«  ­Ґ
ЇҐз в овбп,   ¤«п n = 0 - ЇҐз в овбп.)

ђҐиҐ­ЁҐ.

base:=1;
{base - б⥯Ґ­м 10, ­Ґ ЇаҐў®б室пй п n}
while 10 * base <= n do begin
| base:= base * 10;
end;
{base - ¬ ЄбЁ¬ «м­ п б⥯Ґ­м 10, ­Ґ ЇаҐў®б室пй п n}
k:=n;
{Ё­ў аЁ ­в: ®бв «®бм ­ ЇҐз в вм k б ⥬ ¦Ґ зЁб«®¬
§­ Є®ў, зв® ў base; base = 100..00}
while base <> 1 do begin
| write(k div base);
| k:= k mod base;
| base:= base div 10;
end;
{base=1; ®бв «®бм ­ ЇҐз в вм ®¤­®§­ з­®Ґ зЁб«® k}
write(k);

(’ЁЇЁз­ п ®иЁЎЄ  ЇаЁ аҐиҐ­ЁЁ нв®© § ¤ зЁ: ­ҐЇа ўЁ«м­® ®Ўа Ў вл-
ў овбп зЁб«  б ­г«п¬Ё Ї®бҐаҐ¤Ё­Ґ. ЏаЁўҐ¤Ґ­­л© Ё­ў аЁ ­в ¤®ЇгбЄ -
Ґв б«гз ©, Є®Ј¤  k < base; ў н⮬ б«гз Ґ ЇҐз в ­ЁҐ k ­ зЁ­ Ґвбп
б® бв аиЁе ­г«Ґ©.)

1.1.27. ’® ¦Ґ б ¬®Ґ, ­® ­ ¤® ­ ЇҐз в вм ¤ҐбпвЁз­го § ЇЁбм ў
®Ўа в­®¬ Ї®ап¤ЄҐ. („«п n = 173 ­ ¤® ­ ЇҐз в вм 371.)

ђҐиҐ­ЁҐ.

k:= n;
{Ё­ў аЁ ­в: ®бв «®бм ­ ЇҐз в вм k ў ®Ўа в­®¬ Ї®ап¤ЄҐ}
while k <> 0 do begin
| write (k mod 10);
| k:= k div 10;
end;

1.1.28. „ ­® ­ вга «м­®Ґ n. Џ®¤бзЁв вм Є®«ЁзҐбвў® аҐиҐ­Ё©
­Ґа ўҐ­бвў  x*x + y*y < n ў ­ вга «м­ле (­Ґ®ваЁж вҐ«м­ле 楫ле)
зЁб« е, ­Ґ ЁбЇ®«м§гп ¤Ґ©бвўЁ© б ўҐйҐб⢥­­л¬Ё зЁб« ¬Ё.

ђҐиҐ­ЁҐ.

k := 0; s := 0;
{Ё­ў аЁ ­в: s = Є®«ЁзҐбвў® аҐиҐ­Ё© ­Ґа ўҐ­бвў 
x*x + y*y < n c x < k}
while k*k < n do begin
| ...
| {t = зЁб«® аҐиҐ­Ё© ­Ґа ўҐ­бвў  k*k + y*y < n
| (ЇаЁ ¤ ­­®¬ k) }
| k := k + 1;
| s := s + t;
end;
{k*k >= n, Ї®н⮬г s = Є®«ЁзҐбвў® ўбҐе аҐиҐ­Ё©
­Ґа ўҐ­бвў }

‡¤Ґбм ... - Ї®Є  ҐйҐ ­Ґ ­ ЇЁб ­­л© Єгб®Є Їа®Ја ¬¬л, Є®в®ал©
Ўг¤Ґв в ЄЁ¬:

l := 0; t := 0;
{Ё­ў аЁ ­в: t = зЁб«® аҐиҐ­Ё©
­Ґа ўҐ­бвў  k*k + y*y < n c y < l }
while k*k + l*l < n do begin
| l := l + 1;
| t := t + 1;
end;
{k*k + l*l >= n, Ї®н⮬г t = зЁб«®
ўбҐе аҐиҐ­Ё© ­Ґа ўҐ­бвў  k*k + y*y < n}

1.1.29. ’  ¦Ґ § ¤ з , ­® Є®«ЁзҐбвў® ®ЇҐа жЁ© ¤®«¦­® Ўлвм
Ї®ап¤Є  (n ў б⥯Ґ­Ё 1/2). (‚ ЇаҐ¤л¤г饬 аҐиҐ­ЁЁ, Є Є ¬®¦­®
Ї®¤бзЁв вм, Ї®ап¤Є  n ®ЇҐа жЁ©.)

ђҐиҐ­ЁҐ. Ќ б Ё­вҐаҐбгов в®зЄЁ аҐиҐвЄЁ (б 楫묨 Є®®а¤Ё­ в -
* ¬Ё) ў ЇҐаў®¬ Єў ¤а ­вҐ, Ї®Ї ¤ ойЁҐ ў­гвам ЄагЈ 
* * * а ¤Ёгб  (n ў б⥯Ґ­Ё 1/2). €­вҐаҐбго饥 ­ б
* * * * ¬­®¦Ґбвў® (­ §®ўҐ¬ ҐЈ® X) б®бв®Ёв Ё§ ®ЎкҐ¤Ё­Ґ-
* * * * ­Ёп ўҐавЁЄ «м­ле бв®«Ўж®ў гЎлў о饩 ўлб®вл.
* * * * * €¤Ґп аҐиҐ­Ёп б®бв®Ёв ў ⮬, зв®Ўл "¤ўЁЈ вмбп
ў¤®«м ҐЈ® Ја ­Ёжл", бЇгбЄ пбм Ї® ўҐае­Ґ¬г ҐЈ® Єа о, Є Є Ї®
«Ґбв­ЁжҐ. Љ®®а¤Ё­ вл ¤ўЁ¦г饩бп в®зЄЁ ®Ў®§­ зЁ¬ <k,l>. ‚ўҐ¤Ґ¬
ҐйҐ ®¤­г ЇҐаҐ¬Ґ­­го s Ё Ўг¤Ґ¬ Ї®¤¤Ґа¦Ёў вм ЁбвЁ­­®бвм в Є®Ј® гб-
«®ўЁп:
<k,l> ­ е®¤Ёвбп ба §г ­ ¤ k-л¬ бв®«Ўж®¬;
s - зЁб«® в®зҐЄ ў ЇаҐ¤л¤гйЁе бв®«Ўж е.

”®а¬ «м­®:
l - ¬Ё­Ё¬ «м­®Ґ б।Ё вҐе l >= 0, ¤«п Є®в®але <k,l> ­Ґ ЇаЁ­ ¤-
«Ґ¦Ёв X;
s - зЁб«® Ї а ­ вга «м­ле x, y, ¤«п Є®в®але x < k Ё <x,y> ЇаЁ-
­ ¤«Ґ¦Ёв X.
ЋЎ®§­ зЁ¬ нвЁ гб«®ўЁп зҐаҐ§ (€).

k := 0; l := 0;
while "<0,l> ЇаЁ­ ¤«Ґ¦Ёв X" do begin
| l := l + 1;
end;
{k = 0, l - ¬Ё­Ё¬ «м­®Ґ б।Ё вҐе l >= 0,
¤«п Є®в®але <k,l> ­Ґ ЇаЁ­ ¤«Ґ¦Ёв X }
s := 0;
{Ё­ў аЁ ­в: €}
while not (l = 0) do begin
| s := s + l;
| {s - зЁб«® в®зҐЄ ў бв®«Ўж е ¤® k-Ј® ўЄ«озЁвҐ«м­®}
| k := k + 1;
| {в®зЄ  <k,l> «Ґ¦Ёв ў­Ґ X, ­®, ў®§¬®¦­®, ҐҐ ­ ¤® б¤ўЁ­гвм
| ў­Ё§, зв®Ўл ў®ббв ­®ўЁвм € }
| while (l <> 0) and ("<k, l-1> ­Ґ ЇаЁ­ ¤«Ґ¦Ёв X") do begin
| | l := l - 1;
| end;
end;
{€, l = 0, Ї®н⮬г k-л© бв®«ЎҐж Ё ўбҐ б«Ґ¤гойЁҐ Їгбвл,  
s а ў­® ЁбЄ®¬®¬г зЁб«г}

ЋжҐ­Є  зЁб«  ¤Ґ©бвўЁ© ®зҐўЁ¤­ : б­ з «  ¬л ¤ўЁ¦Ґ¬бп ўўҐае ­Ґ Ў®-
«ҐҐ 祬 ­  (n ў б⥯Ґ­Ё 1/2) и Ј®ў,   § вҐ¬ ў­Ё§ Ё ўЇа ў® - ў
Є ¦¤го бв®а®­г ­Ґ Ў®«ҐҐ 祬 ­  (n ў б⥯Ґ­Ё 1/2) и Ј®ў.

1.1.30. „ ­л ­ вга «м­лҐ зЁб«  n Ё k, n > 1. Ќ ЇҐз в вм k
¤ҐбпвЁз­ле §­ Є®ў зЁб«  1/n. (ЏаЁ ­ «ЁзЁЁ ¤ўге ¤ҐбпвЁз­ле а §«®-
¦Ґ­Ё© ўлЎЁа Ґвбп в® Ё§ ­Ёе, Є®в®а®Ґ ­Ґ ᮤҐа¦Ёв ¤ҐўпвЄЁ ў ЇҐаЁ-
®¤Ґ.) Џа®Ја ¬¬  ¤®«¦­  ЁбЇ®«м§®ў вм в®«мЄ® жҐ«лҐ ЇҐаҐ¬Ґ­­лҐ.

ђҐиҐ­ЁҐ. ‘¤ўЁ­гў ў ¤ҐбпвЁз­®© § ЇЁбЁ зЁб«  1/n § Їпвго ­  k
¬Ґбв ўЇа ў®, Ї®«гзЁ¬ зЁб«® (10 ў б⥯Ґ­Ё k)/n. Ќ ¬ ­ ¤® ­ ЇҐз -
в вм ҐЈ® 楫го з бвм, в. Ґ. а §¤Ґ«Ёвм (10 ў б⥯Ґ­Ё k) ­  n ­ -
楫®. ‘в ­¤ ав­л© бЇ®б®Ў вॡгҐв ЁбЇ®«м§®ў ­Ёп Ў®«миЁе Ї® ўҐ«Ё-
зЁ­Ґ зЁбҐ«, Є®в®алҐ ¬®Јгв ўл©вЁ §  Ја ­Ёжл ¤Ё Ї §®­  ЇаҐ¤бв ўЁ-
¬ле зЁбҐ«. Џ®н⮬㠬л ᤥ« Ґ¬ Ё­ зҐ (б«Ґ¤гп ®Ўлз­®¬г ¬Ґв®¤г "¤Ґ-
«Ґ­Ёп гЈ®«Є®¬") Ё Ўг¤Ґ¬ еа ­Ёвм "®бв в®Є" r:

l := 0; r := 1;
{Ё­ў.: ­ ЇҐз в ­® l а §а冷ў 1/n, ®бв «®бм ­ ЇҐз в вм
k - l а §а冷ў ¤а®ЎЁ r/n}
while l <> k do begin
| write ( (10 * r) div n);
| r := (10 * r) mod n;
| l := l + 1;
end;

1.1.31. „ ­® ­ вга «м­®Ґ зЁб«® n > 1. ЋЇаҐ¤Ґ«Ёвм ¤«Ё­г ЇҐ-
аЁ®¤  ¤ҐбпвЁз­®© § ЇЁбЁ ¤а®ЎЁ 1/n.

ђҐиҐ­ЁҐ. ЏҐаЁ®¤ ¤а®ЎЁ а ўҐ­ ЇҐаЁ®¤г ў Ї®б«Ґ¤®ў вҐ«м­®бвЁ
®бв вЄ®ў (¤®Є ¦ЁвҐ нв®; ў з бв­®бвЁ, ­ ¤® ¤®Є § вм, зв® ®­ ­Ґ
¬®¦Ґв Ўлвм ¬Ґ­миҐ). Ља®¬Ґ в®Ј®, ў нв®© Ї®б«Ґ¤®ў вҐ«м­®бвЁ ўбҐ
ЇҐаЁ®¤ЁзҐбЄЁ Ї®ўв®апойЁҐбп ўбҐ з«Ґ­л а §«Ёз­л,   ЇаҐ¤ЇҐаЁ®¤ Ё¬Ґ-
Ґв ¤«Ё­г ­Ґ Ў®«ҐҐ n. Џ®н⮬㠤®бв в®з­® ­ ©вЁ (n+1)-л© з«Ґ­ Ї®б-
«Ґ¤®ў вҐ«м­®бвЁ ®бв вЄ®ў Ё § вҐ¬ ¬Ё­Ё¬ «м­®Ґ k, ЇаЁ Є®в®а®¬
(n+1+k)-л© з«Ґ­ б®ўЇ ¤ Ґв б (n+1)-л¬.

l := 0; r := 1;
{Ё­ў аЁ ­в: r/n = १г«мв в ®вЎа блў ­Ёп l §­ Є®ў ў 1/n}
while l <> n+1 do begin
| r := (10 * r) mod n;
| l := l + 1;
end;
c := r;
{c = (n+1)-л© з«Ґ­ Ї®б«Ґ¤®ў вҐ«м­®бвЁ ®бв вЄ®ў}
r := (10 * r) mod n;
k := 0;
{r = (n+k+1)-л© з«Ґ­ Ї®б«Ґ¤®ў вҐ«м­®бвЁ ®бв вЄ®ў}
while r <> c do begin
| r := (10 * r) mod n;
| k := k + 1;
end;

1.1.32 (ќ. „Ґ©Єбва ). ”г­ЄжЁп f б ­ вга «м­л¬Ё  аЈг¬Ґ­в ¬Ё
Ё §­ зҐ­Ёп¬Ё ®ЇаҐ¤Ґ«Ґ­  в Є: f(0) = 0, f(1) = 1, f (2n) = f(n),
f (2n+1) = f (n) + f (n+1). ‘®бв ўЁвм Їа®Ја ¬¬г ўлзЁб«Ґ­Ёп f (n)
Ї® § ¤ ­­®¬г n, вॡгойго Ї®ап¤Є  log n ®ЇҐа жЁ©.

ђҐиҐ­ЁҐ.
k := n; a := 1; b := 0;
{Ё­ў аЁ ­в: 0 <= k, f (n) = a * f(k) + b * f (k+1)}
while k <> 0 do begin
| if k mod 2 = 0 then begin
| | l := k div 2;
| | {k = 2l, f(k) = f(l), f (k+1) = f (2l+1) = f(l) + f(l+1),
| | f (n) = a*f(k) + b*f(k+1) = (a+b)*f(l) + b*f(l+1)}
| | a := a + b; k := l;
| end else begin
| | l := k div 2;
| | {k = 2l + 1, f(k) = f(l) + f(l+1),
| | f(k+1) = f(2l+2) = f(l+1),
| | f(n) = a*f(k) + b*f(k+1) = a*f(l) + (a+b)*f(l+1)}
| | b := a + b; k := l;
| end;
end;
{k = 0, f(n) = a * f(0) + b * f(1) = b, зв® Ё вॡ®ў «®бм}

1.1.33. ’® ¦Ґ, Ґб«Ё f(0) = 13, f(1) = 17,   f(2n) =
43 f(n) + 57 f(n+1), f(2n+1) = 91 f(n) + 179 f(n+1) ЇаЁ n>=1.
“Є § ­ЁҐ. •а ­Ёвм Є®нддЁжЁҐ­вл ў ўла ¦Ґ­ЁЁ f(n) зҐаҐ§ ваЁ
б®бҐ¤­Ёе зЁб« .

1.1.34. „ ­л ­ вга «м­лҐ зЁб«    Ё b, ЇаЁзҐ¬ b > 0. Ќ ©вЁ
з бв­®Ґ Ё ®бв в®Є ЇаЁ ¤Ґ«Ґ­ЁЁ   ­  b, ®ЇҐаЁагп «Ёим б 楫묨
зЁб« ¬Ё Ё ­Ґ ЁбЇ®«м§гп ®ЇҐа жЁЁ div Ё mod, §  ЁбЄ«о祭ЁҐ¬ ¤Ґ«Ґ-
­Ёп ­  2 зҐв­ле зЁбҐ«; зЁб«® и Ј®ў ­Ґ ¤®«¦­® ЇаҐў®б室Ёвм
C1*log(a/b) + C2 ¤«п ­ҐЄ®в®але Є®­бв ­в C1, C2.

ђҐиҐ­ЁҐ.

b1 := b;
while b1 <= a do begin
| b1 := b1 * 2;
end;
{b1 > a, b1 = b * (­ҐЄ®в®а п б⥯Ґ­м 2)}
q:=0; r:=a;
{Ё­ў аЁ ­в: q, r - з бв­®Ґ Ё ®бв в®Є ЇаЁ ¤Ґ«Ґ­ЁЁ a ­  b1,
b1 = b * (­ҐЄ®в®а п б⥯Ґ­м 2)}
while b1 <> b do begin
| b1 := b1 div 2 ; q := q * 2;
| { a = b1 * q + r, 0 <= r, r < 2 * b1}
| if r >= b1 then begin
| | r := r - b1;
| | q := q + 1;
| end;
end;
{q, r - з бв­®Ґ Ё ®бв в®Є ЇаЁ ¤Ґ«Ґ­ЁЁ a ­  b}

1.2. Њ ббЁўл.

‚ б«Ґ¤гойЁе § ¤ з е ЇҐаҐ¬Ґ­­лҐ x, y, z ЇаҐ¤Ї®« Ј овбп ®ЇЁ-
б ­­л¬Ё Є Є array [1..n] of integer (n - ­ҐЄ®в®а®Ґ ­ вга «м­®Ґ
зЁб«®, Ў®«м襥 0), Ґб«Ё Ё­®Ґ ­Ґ ®Ј®ў®аҐ­® пў­®.

1.2.1. ‡ Ї®«­Ёвм ¬ ббЁў x ­г«п¬Ё. (ќв® ®§­ з Ґв, зв® ­г¦­®
б®бв ўЁвм да Ј¬Ґ­в Їа®Ја ¬¬л, Ї®б«Ґ ўлЇ®«­Ґ­Ёп Є®в®а®Ј® ўбҐ §­ -
祭Ёп x[1]..x[n] а ў­п«Ёбм Ўл ­г«о, ­Ґ§ ўЁбЁ¬® ®в ­ з «м­®Ј®
§­ зҐ­Ёп ЇҐаҐ¬Ґ­­®© x.)

ђҐиҐ­ЁҐ.

i := 0;
{Ё­ў аЁ ­в: ЇҐаўлҐ i §­ зҐ­Ё© x[1]..x[i] а ў­л 0}
while i <> n do begin
| i := i + 1;
| {x[1]..x[i-1] = 0}
| x[i] := 0;
end;

1.2.2. Џ®¤бзЁв вм Є®«ЁзҐбвў® ­г«Ґ© ў ¬ ббЁўҐ x. (‘®бв ўЁвм
да Ј¬Ґ­в Їа®Ја ¬¬л, ­Ґ ¬Ґ­пойЁ© §­ зҐ­Ёп x, Ї®б«Ґ ЁбЇ®«­Ґ­Ёп Є®-
в®а®Ј® §­ зҐ­ЁҐ ­ҐЄ®в®а®© 楫®© ЇҐаҐ¬Ґ­­®© k а ў­п«®бм Ўл зЁб«г
­г«Ґ© б।Ё Є®¬Ї®­Ґ­в ¬ ббЁў  x.)

ђҐиҐ­ЁҐ.
...
{Ё­ў аЁ ­в: k= зЁб«® ­г«Ґ© б।Ё x[1]...x[i] }
...

1.2.3. ЌҐ ЁбЇ®«м§гп ®ЇҐа в®а  ЇаЁбў Ёў ­Ёп ¤«п ¬ ббЁў®ў,
б®бв ўЁвм да Ј¬Ґ­в Їа®Ја ¬¬л, нЄўЁў «Ґ­в­л© ®ЇҐа в®аг x:=y.

ђҐиҐ­ЁҐ.

i := 0;
{Ё­ў аЁ ­в: §­ зҐ­ЁҐ y ­Ґ Ё§¬Ґ­Ё«®бм, x[l] = y[l] ЇаЁ l <= i}
while i <> n do begin
| i := i + 1;
| x[i] := y[i];
end;

1.2.4. Ќ ©вЁ ¬ ЄбЁ¬г¬ Ё§ x[1]..x[n].

ђҐиҐ­ЁҐ.
i := 1; max := x[1];
{Ё­ў аЁ ­в: max = ¬ ЄбЁ¬г¬ Ё§ x[1]..x[i]}
while i <> n do begin
| i := i + 1;
| {max = ¬ ЄбЁ¬г¬ Ё§ x[1]..x[i-1]}
| if x[i] > max then begin
| | max := x[i];
| end;
end;

1.2.5. „ ­ ¬ ббЁў x: array [1..n] of integer, ЇаЁзс¬ x[1]
<= x[2] <= ... <= x[n]. Ќ ©вЁ Є®«ЁзҐбвў® а §«Ёз­ле зЁбҐ« б।Ё
н«Ґ¬Ґ­в®ў нв®Ј® ¬ ббЁў .

ђҐиҐ­ЁҐ. (1 ў аЁ ­в)

i := 1; k := 1;
{Ё­ў аЁ ­в: k - Є®«ЁзҐбвў® а §«Ёз­ле зЁбҐ« б।Ё x[1]..x[i]}
while i <> n do begin
| i := i + 1;
| if x[i] <> x[i-1] then begin
| | k := k + 1;
| end;
end;

(2 ў аЁ ­в) €бЄ®¬®Ґ зЁб«® ­  1 Ў®«миҐ Є®«ЁзҐбвў  вҐе зЁбҐ«
i Ё§ 1..n-1, ¤«п Є®в®але x[i] <> x[i+1].

k := 1;
for i := 1 to n-1 do begin
| if x[i]<> x[i+1] then begin
| | k := k + 1;
| end;
end;

1.2.6. (‘®®ЎйЁ« Ђ.‹.Ѓаг¤­®.) Џаאַ㣮«м­®Ґ Ї®«Ґ m ­  n а §-
ЎЁв® ­  mn Єў ¤а в­ле Є«Ґв®Є. ЌҐЄ®в®алҐ Є«ҐвЄЁ Ї®Єа иҐ­л ў зҐа-
­л© 梥в. €§ўҐбв­®, зв® ўбҐ зҐа­лҐ Є«ҐвЄЁ ¬®Јгв Ўлвм а §ЎЁвл ­ 
­ҐбЄ®«мЄ® ­ҐЇҐаҐбҐЄ ойЁебп Ё ­Ґ Ё¬ҐойЁе ®ЎйЁе ўҐаиЁ­ зҐа­ле Їап-
¬®гЈ®«м­ЁЄ®ў. ‘зЁв п, зв® жўҐв  Є«Ґв®Є ¤ ­л ў ўЁ¤Ґ ¬ ббЁў  вЁЇ 
array [1..m] of array [1..n] of boolean;
Ї®¤бзЁв вм зЁб«® зҐа­ле Їаאַ㣮«м­ЁЄ®ў, ® Є®в®але и«  аҐзм.
—Ёб«® ¤Ґ©бвўЁ© ¤®«¦­® Ўлвм Ї®ап¤Є  m*n.

ђҐиҐ­ЁҐ. —Ёб«® Їаאַ㣮«м­ЁЄ®ў а ў­® зЁб«г Ёе «Ґўле ўҐае­Ёе
гЈ«®ў. џў«пҐвбп «Ё Є«ҐвЄ  ўҐае­Ё¬ гЈ«®¬, ¬®¦­® г§­ вм, Ї®б¬®вॢ
­  ҐҐ 梥в,   в Є¦Ґ 梥⠢Ґае­ҐЈ® Ё «Ґў®Ј® б®бҐ¤Ґ©. (ЌҐ § -
Ўг¤мвҐ, зв® Ёе ¬®¦Ґв ­Ґ Ўлвм, Ґб«Ё Є«ҐвЄ  б Єа о.)

1.2.7. „ ­ ¬ ббЁў x: array [1..n] of integer. Ќ ©вЁ Є®«Ё-
зҐбвў® а §«Ёз­ле зЁбҐ« б।Ё н«Ґ¬Ґ­в®ў нв®Ј® ¬ ббЁў . (—Ёб«®
¤Ґ©бвўЁ© ¤®«¦­® Ўлвм Ї®ап¤Є  n*n.)

1.2.8. ’  ¦Ґ § ¤ з , Ґб«Ё вॡгҐвбп, зв®Ўл Є®«ЁзҐбвў®
¤Ґ©бвўЁ© Ўл«® Ї®ап¤Є  n* log n. (“Є § ­ЁҐ. ‘¬®ваЁ Ј« ўг ® б®авЁ-
а®ўЄҐ.)

1.2.9. ’  ¦Ґ § ¤ з , Ґб«Ё Ё§ўҐбв­®, зв® ўбҐ н«Ґ¬Ґ­вл ¬ ббЁ-
ў  - зЁб«  ®в 1 ¤® k Ё зЁб«® ¤Ґ©бвўЁ© ¤®«¦­® Ўлвм Ї®ап¤Є  n+k.

1.2.10. „ ­ ¬ ббЁў x [1]..x[n] 楫ле зЁбҐ«. ЌҐ ЁбЇ®«м§гп
¤агЈЁе ¬ ббЁў®ў, ЇҐаҐбв ўЁвм н«Ґ¬Ґ­вл ¬ ббЁў  ў ®Ўа в­®¬ Ї®ап¤-
ЄҐ.

ђҐиҐ­ЁҐ. —Ёб«  x [i] Ё x [n+1-i] ­г¦­® Ї®¬Ґ­пвм ¬Ґбв ¬Ё ¤«п
ўбҐе i, ¤«п Є®в®але i < n + 1 - i, в.Ґ. 2*i < n + 1 <=> 2*i <= n
<=> i <= n div 2:
for i := 1 to n div 2 do begin
| ...®Ў¬Ґ­пвм x [i] Ё x [n+1-i];
end;

1.2.11. (Ё§ Є­ЁЈЁ „.ѓаЁб ) „ ­ ¬ ббЁў 楫ле зЁбҐ«
x[1]..x[m+n], а бб¬ ваЁў Ґ¬л© Є Є ᮥ¤Ё­Ґ­ЁҐ ¤ўге ҐЈ® ®в१Є®ў:
­ з «  x[1]..x[m] ¤«Ё­л m Ё Є®­ж  x[m+1]..x[m+n] ¤«Ё­л n. ЌҐ Ёб-
Ї®«м§гп ¤®Ї®«­ЁвҐ«м­ле ¬ ббЁў®ў, ЇҐаҐбв ўЁвм ­ з «® Ё Є®­Ґж.
(—Ёб«® ¤Ґ©бвўЁ© Ї®ап¤Є  m+n.)

ђҐиҐ­ЁҐ. (1 ў аЁ ­в). ЏҐаҐўҐа­Ґ¬ (а бЇ®«®¦Ё¬ ў ®Ўа в­®¬ Ї®-
ап¤ЄҐ) ®в¤Ґ«м­® ­ з «® Ё Є®­Ґж ¬ ббЁў ,   § вҐ¬ ЇҐаҐўҐа­Ґ¬ ўҐбм
¬ ббЁў Є Є Ґ¤Ё­®Ґ 楫®Ґ.

(2 ў аЁ ­в, Ђ.ѓ.Љг譨७Є®). ђ бб¬ ваЁў п ¬ ббЁў § ЇЁб ­­л¬
Ї® ЄагЈг, ўЁ¤Ё¬, зв® вॡ㥬®Ґ ¤Ґ©бвўЁҐ - Ї®ў®а®в ЄагЈ . Љ Є Ё§-
ўҐбв­®, Ї®ў®а®в Ґбвм Є®¬Ї®§ЁжЁп ¤ўге ®бҐўле бЁ¬¬ҐваЁ©.

(3 ў аЁ ­в). ђ бᬮваЁ¬ Ў®«ҐҐ ®Ўйго § ¤ зг - ®Ў¬Ґ­ ¤ўге
гз бвЄ®ў ¬ ббЁў  x[p+1]..x[q] Ё x[q+1]..x[s]. ЏаҐ¤Ї®«®¦Ё¬, зв®
¤«Ё­  «Ґў®Ј® гз бвЄ  (­ §®ўҐ¬ ҐЈ® A) ­Ґ Ў®«миҐ ¤«Ё­л Їа ў®Ј®
(­ §®ўҐ¬ ҐЈ® B). ‚뤥«Ё¬ ў B ­ з «® в®© ¦Ґ ¤«Ё­л, зв® Ё A, ­ §®-
ўҐ¬ ҐЈ® B1,   ®бв в®Є B2. (’ Є зв® B = B1 + B2, Ґб«Ё ®Ў®§­ з вм
Ї«оᮬ ЇаЁЇЁблў ­ЁҐ ¬ ббЁў®ў ¤агЈ Є ¤агЈг.) Ќ ¬ ­ ¤® Ё§ A + B1 +
B2 Ї®«гзЁвм B1 + B2 + A. ЊҐ­пп ¬Ґбв ¬Ё гз бвЄЁ A Ё B1 - ®­Ё Ё¬Ґ-
ов ®¤Ё­ Є®ўго ¤«Ё­г, Ё ᤥ« вм нв® «ҐЈЄ®,- Ї®«гз Ґ¬ B1 + A + B2,
Ё ®бв «®бм Ї®¬Ґ­пвм ¬Ґбв ¬Ё A Ё B2. ’Ґ¬ б ¬л¬ ¬л ᢥ«Ё ¤Ґ«® Є
ЇҐаҐбв ­®ўЄҐ ¤ўге ®ва§Є®ў ¬Ґ­м襩 ¤«Ё­л. €в Є, Ї®«гз Ґ¬ в Єго
б奬㠯ணࠬ¬л:

p := 0; q := m; r := m + n;
{Ё­ў аЁ ­в: ®бв «®бм ЇҐаҐбв ўЁвм x[p+1]..x[q], x[q+1]..x[s]}
while (p <> q) and (q <> s) do begin
| {®Ў  гз бвЄ  ­ҐЇгбвл}
| if (q - p) <= (s - q) then begin
| | ..ЇҐаҐбв ўЁвм x[p+1]..x[q] Ё x[q+1]..x[q+(q-p)]
| | pnew := q; qnew := q + (q - p);
| | p := pnew; q := qnew;
| end else begin
| | ..ЇҐаҐбв ўЁвм x[q-(r-q)+1]..x[q] Ё x[q+1]..x[r]
| | qnew := q - (r - q); rnew := q;
| | q := qnew; r := rnew;
| end;
end;

ЋжҐ­Є  ўаҐ¬Ґ­Ё а Ў®вл: ­  ®зҐаҐ¤­®¬ и ЈҐ ®бв ўиЁ©бп ¤«п ®Ўа Ў®в-
ЄЁ гз бв®Є бв ­®ўЁвбп Є®а®зҐ ­  ¤«Ё­г A; зЁб«® ¤Ґ©бвўЁ© ЇаЁ н⮬
в Є¦Ґ Їа®Ї®ажЁ®­ «м­® ¤«Ё­Ґ A.

1.2.12. Љ®нддЁжЁҐ­вл ¬­®Ј®з«Ґ­  еа ­пвбп ў ¬ ббЁўҐ a: array
[0..n] of integer (n - ­ вга «м­®Ґ зЁб«®, б⥯Ґ­м ¬­®Ј®з«Ґ­ ).
‚лзЁб«Ёвм §­ зҐ­ЁҐ нв®Ј® ¬­®Ј®з«Ґ­  ў в®зЄҐ x (в. Ґ. a[n]*(x ў
б⥯Ґ­Ё n)+...+a[1]*x+a[0]).

ђҐиҐ­ЁҐ. (ЋЇЁблў Ґ¬л©  «Ј®аЁв¬ ­ §лў Ґвбп б奬®© ѓ®а­Ґа .)

k := 0; y := a[n];
{Ё­ў аЁ ­в: 0 <= k <= n,
y= a[n]*(x ў б⥯Ґ­Ё k)+...+a[n-1]*(x ў б⥯Ґ­Ё k-1)+...+
+ a[n-k]*(x ў б⥯Ґ­Ё 0)}
while k<>n do begin
| k := k + 1;
| y := y * x + a [n - k];
end;

1.2.13. („«п §­ Є®¬ле б ®б­®ў ¬Ё  ­ «Ё§ . ‘®®ЎйЁ« Ђ.ѓ.Љги-
­ЁаҐ­Є®.) „®Ї®«­Ёвм  «Ј®аЁв¬ ўлзЁб«Ґ­Ёп §­ зҐ­Ёп ¬­®Ј®з«Ґ­  ў
§ ¤ ­­®© в®зЄҐ Ї® б奬Ґ ѓ®а­Ґа  ўлзЁб«Ґ­ЁҐ¬ §­ зҐ­Ёп ҐЈ® Їа®Ё§-
ў®¤­®© ў в®© ¦Ґ в®зЄҐ.

ђҐиҐ­ЁҐ. „®Ў ў«Ґ­ЁҐ ­®ў®Ј® Є®нддЁжЁҐ­в  ᮮ⢥вбвўгҐв ЇҐаҐ-
室㠮⠬­®Ј®з«Ґ­  P(x) Є ¬­®Ј®з«Ґ­г P(x)*x + c. …Ј® Їа®Ё§ў®¤­ п
ў в®зЄҐ x а ў­  P'(x)*x + P(x). (ќв® аҐиҐ­ЁҐ ®Ў« ¤ Ґв § Ў ў­л¬
бў®©бвў®¬: ­Ґ ­ ¤® §­ вм § а ­ҐҐ б⥯Ґ­м ¬­®Ј®з«Ґ­ . …б«Ё вॡ®-
ў вм ўлЇ®«­Ґ­Ёп нв®Ј® гб«®ўЁп, ¤  ҐйҐ Їа®бЁвм ўлзЁб«пвм в®«мЄ®
§­ зҐ­ЁҐ Їа®Ё§ў®¤­®©, ­Ґ гЇ®¬Ё­ п ® б ¬®¬ ¬­®Ј®з«Ґ­Ґ, Ї®«гз Ґвбп
­Ґ в Є п г¦ Їа®бв п § ¤ з .)

1.2.14. ‚ ¬ ббЁў е
a:array [0..k] of integer Ё b: array [0..l] of integer
еа ­пвбп Є®нддЁжЁҐ­вл ¤ўге ¬­®Ј®з«Ґ­®ў б⥯Ґ­Ґ© k Ё l. Џ®¬Ґб-
вЁвм ў ¬ ббЁў c: array [0..m] of integer Є®нддЁжЁҐ­вл Ёе Їа®Ё§-
ўҐ¤Ґ­Ёп. (—Ёб«  k, l, m - ­ вга «м­лҐ, m = k + l; н«Ґ¬Ґ­в ¬ б-
бЁў  б Ё­¤ҐЄб®¬ i ᮤҐа¦Ёв Є®нддЁжЁҐ­в ЇаЁ x ў б⥯Ґ­Ё i.)

ђҐиҐ­ЁҐ.

for i:=0 to m do begin
| c[i]:=0;
end;
for i:=0 to k do begin
| for j:=0 to l do begin
| | c[i+j] := c[i+j] + a[i]*b[j];
| end;
end;

1.2.15. ЏаҐ¤«®¦Ґ­­л© ўлиҐ  «Ј®аЁв¬ ЇҐаҐ¬­®¦Ґ­Ёп ¬­®Ј®з«Ґ­®ў
вॡгҐв Ї®ап¤Є  n*n ¤Ґ©бвўЁ© ¤«п ЇҐаҐ¬­®¦Ґ­Ёп ¤ўге ¬­®Ј®з«Ґ­®ў
б⥯Ґ­Ё n. ЏаЁ¤г¬ вм Ў®«ҐҐ нд䥪⨢­л© (¤«п Ў®«миЁе n)  «Ј®аЁв¬,
Є®в®а®¬г ¤®бв в®з­® Ї®ап¤Є  (n ў б⥯Ґ­Ё (log 4)/(log 3))
¤Ґ©бвўЁ©.
“Є § ­ЁҐ. ЏаҐ¤бв ўЁ¬ ᥡҐ, зв® ­ ¤® ЇҐаҐ¬­®¦Ёвм ¤ў  ¬­®Ј®з-
«Ґ­  б⥯Ґ­Ё 2k. €е ¬®¦­® ЇаҐ¤бв ўЁвм ў ўЁ¤Ґ
A(x)*x^k + B(x) Ё C(x)*x^k + D(x)
(§¤Ґбм x^k ®Ў®§­ з Ґв x ў б⥯Ґ­Ё k). Џа®Ё§ўҐ¤Ґ­ЁҐ Ёе а ў­®
A(x)C(x)*x^{2k} + (A(x)D(x)+B(x)C(x))*x^k + B(x)D(x)
…бвҐб⢥­­л© бЇ®б®Ў ўлзЁб«Ґ­Ёп AC, AD+BC, BD вॡгҐв зҐвлаҐе г¬-
­®¦Ґ­Ё© ¬­®Ј®з«Ґ­®ў б⥯Ґ­Ё k, ®¤­ Є® Ёе Є®«ЁзҐбвў® ¬®¦­® б®Єа -
вЁвм ¤® ваҐе б Ї®¬®ймо в Є®© еЁва®бвЁ: ўлзЁб«Ёвм AC, BD Ё
(A+B)(C+D),   § вҐ¬ § ¬ҐвЁвм, зв® AD+BC=(A+B)(C+D)-AC-BD.

1.2.16. „ ­л ¤ў  ў®§а бв ойЁе ¬ ббЁў  x: array [1..k] of
integer Ё y: array [1..l] of integer. Ќ ©вЁ Є®«ЁзҐбвў® ®ЎйЁе
н«Ґ¬Ґ­в®ў ў нвЁе ¬ ббЁў е (в. Ґ. Є®«ЁзҐбвў® вҐе 楫ле t, ¤«п Є®-
в®але t = x[i] = y[j] ¤«п ­ҐЄ®в®але i Ё j). (—Ёб«® ¤Ґ©бвўЁ© Ї®-
ап¤Є  k+l.)

ђҐиҐ­ЁҐ.

k1:=0; l1:=0; n:=0;
{Ё­ў аЁ ­в: 0<=k1<=k; 0<=l1<=l; ЁбЄ®¬л© ®вўҐв = n + Є®«ЁзҐбвў®
®ЎйЁе н«Ґ¬Ґ­в®ў ў x[k1+1]...x[k] Ё y[l1+1]..y[l]}
while (k1 <> k) and (l1 <> l) do begin
| if x[k1+1] < y[l1+1] then begin
| | k1 := k1 + 1;
| end else if x[k1+1] > y[l1+1] then begin
| | l1 := l1 + 1;
| end else begin {x[k1+1] = y[l1+1]}
| | k1 := k1 + 1;
| | l1 := l1 + 1;
| | n := n + 1;
| end;
end;
{k1 = k Ё«Ё l1 = l, Ї®н⮬㠮¤­® Ё§ ¬­®¦Ґбвў, гЇ®¬п­гвле ў
Ё­ў аЁ ­вҐ, Їгбв®,   n а ў­® ЁбЄ®¬®¬г ®вўҐвг}

‡ ¬Ґз ­ЁҐ. ‚ ваҐв쥩  «мвҐа­ вЁўҐ ¤®бв в®з­® Ўл«® Ўл 㢥«ЁзЁў вм
®¤­г Ё§ ЇҐаҐ¬Ґ­­ле k1, l1; ўв®а п ¤®Ў ў«Ґ­  ¤«п бЁ¬¬ҐваЁЁ.

1.2.17. ђҐиЁвм ЇаҐ¤л¤гйго § ¤ зг, Ґб«Ё Ё§ўҐбв­® «Ёим, зв®
x[1] <= ... <= x[k] Ё y[1] <= ... <= y[l] (ў®§а бв ­ЁҐ § ¬Ґ­Ґ­®
­ҐгЎлў ­ЁҐ¬).

ђҐиҐ­ЁҐ. “б«®ўЁҐ ў®§а бв ­Ёп Ўл«® ЁбЇ®«м§®ў ­® ў ваҐв쥩
 «мвҐа­ вЁўҐ ўлЎ®а : б¤ўЁ­гў k1 Ё l1 ­  1, ¬л ⥬ б ¬л¬ г¬Ґ­ми -
«Ё ­  1 Є®«ЁзҐбвў® ®ЎйЁе н«Ґ¬Ґ­в®ў ў x[k1+1]...x[k] Ё
x[l1+1]...x[l]. ’ҐЇҐам нв® ЇаЁ¤Ґвбп ¤Ґ« вм б«®¦­ҐҐ.

...
end else begin {x[k1+1] = y[l1+1]}
| t := x [k1+1];
| while (k1<k) and (x[k1+1]=t) do begin
| | k1 := k1 + 1;
| end;
| while (l1<l) and (x[l1+1]=t) do begin
| | l1 := l1 + 1;
| end;
end;

‡ ¬Ґз ­ЁҐ. ќв  Їа®Ја ¬¬  Ё¬ҐҐв ¤ҐдҐЄв: ЇаЁ Їа®ўҐаЄҐ гб«®ўЁп
(l1<l) and (x[l1+1]=t)
(Ё«Ё ўв®а®Ј®,  ­ «®ЈЁз­®Ј®) ЇаЁ «®¦­®© ЇҐаў®© бЄ®ЎЄҐ ўв®а п ®Є -
¦Ґвбп ЎҐбб¬лб«Ґ­­®© (Ё­¤ҐЄб ўл©¤Ґв §  Ја ­Ёжл ¬ ббЁў ) Ё ў®§­ЁЄ-
­Ґв ®иЁЎЄ . ЌҐЄ®в®алҐ ўҐабЁЁ Ї бЄ «п, ўлзЁб«пп (A and B), б­ з -
«  ўлзЁб«пов A Ё ЇаЁ «®¦­®¬ A ­Ґ ўлзЁб«пов B. (’ Є ўҐ¤Ґв ᥡп,
­ ЇаЁ¬Ґа, бЁб⥬  Turbo Pascal, 5.0 - ­® ­Ґ 3.0.) ’®Ј¤  ®ЇЁб ­-
­ п ®иЁЎЄ  ­Ґ ў®§­ЁЄ­Ґв.
Ќ® Ґб«Ё ¬л ­Ґ е®вЁ¬ Ї®« Ј вмбп ­  в Є®Ґ бў®©бвў® ЁбЇ®«м§г-
Ґ¬®© ­ ¬Ё ॠ«Ё§ жЁЁ Ї бЄ «п (­Ґ ЇаҐ¤гᬮв७­®Ґ ҐЈ®  ўв®а®¬
Ќ.‚Ёа⮬), в® ¬®¦­® Ї®бвгЇЁвм в Є. ‚ўҐ¤Ґ¬ ¤®Ї®«­ЁвҐ«м­го ЇҐаҐ-
¬Ґ­­го b: boolean Ё ­ ЇЁиҐ¬:

if k1 < k then b := (x[k1+1]=t) else b:=false;
{b = (k1<k) and (x[k1+1] = t}
while b do begin
| k1:=k1+1;
| if k1 < k then b := (x[k1+1]=t) else b:=false;
end;

Њ®¦­® в Є¦Ґ ᤥ« вм Ё­ зҐ:

end else begin {x[k1+1] = y[l1+1]}
| if k1 + 1 = k then begin
| | k1 := k1 + 1;
| | n := n + 1;
| end else if x[k1+1] = x [k1+2] then begin
| | k1 := k1 + 1;
| end else begin
| | k1 := k1 + 1;
| | n := n + 1;
| end;
end;

’ Є Ўг¤Ґв Є®а®зҐ, е®вп ¬Ґ­ҐҐ бЁ¬¬ҐваЁз­®.

Ќ Є®­Ґж, ¬®¦­® 㢥«ЁзЁвм а §¬Ґа ¬ ббЁў  ў ҐЈ® ®ЇЁб ­ЁЁ,
ўЄ«озЁў ў ­ҐЈ® дЁЄвЁў­лҐ н«Ґ¬Ґ­вл.

1.2.18. „ ­л ¤ў  ­ҐгЎлў ойЁе ¬ ббЁў  x: array [1..k] of
integer Ё y: array [1..l] of integer. Ќ ©вЁ зЁб«® а §«Ёз­ле н«Ґ-
¬Ґ­в®ў б।Ё x[1],...,x[k], y[1],...,y[l]. (—Ёб«® ¤Ґ©бвўЁ© Ї®-
ап¤Є  k+l.)

1.2.19. „ ­л ¤ў  ¬ ббЁў  x[1] <= ... <= x[k] Ё y[1] <= ...
<= y[l]. "‘®Ґ¤Ё­Ёвм" Ёе ў ¬ ббЁў z[1] <= ... <= z[m] (m = k+l;
Є ¦¤л© н«Ґ¬Ґ­в ¤®«¦Ґ­ ўе®¤Ёвм ў ¬ ббЁў z бв®«мЄ® а §, бЄ®«мЄ®
а § ®­ ўе®¤Ёв ў ®ЎйҐ© б«®¦­®бвЁ ў ¬ ббЁўл x Ё y). —Ёб«® ¤Ґ©бвўЁ©
Ї®ап¤Є  m.

ђҐиҐ­ЁҐ.

k1 := 0; l1 := 0;
{Ё­ў аЁ ­в: ®вўҐв Ї®«гзЁвбп, Ґб«Ё Є z[1]..z[k1+l1] ЇаЁЇЁб вм
бЇа ў  ᮥ¤Ё­Ґ­ЁҐ ¬ ббЁў®ў x[k1+1]..x[k] Ё y[l1+1]..y[l]}
while (k1 <> k) or (l1 <> l) do begin
| if k1 = k then begin
| | {l1 < l}
| | l1 := l1 + 1;
| | z[k1+l1] := y[l1];
| end else if l1 = l then begin
| | {k1 < k}
| | k1 := k1 + 1;
| | z[k1+l1] := x[k1];
| end else if x[k1+1] <= y[l1+1] then begin
| | k1 := k1 + 1;
| | z[k1+l1] := x[k1];
| end else if x[k1+1] >= y[l1+1] then begin
| | l1 := l1 + 1;
| | z[k1+l1] := y[l1];
| end else begin
| | { в Є®Ј® ­Ґ Ўлў Ґв }
| end;
end;
{k1 = k, l1 = l, ¬ ббЁўл ᮥ¤Ё­Ґ­л}

ќв®в Їа®жҐбб ¬®¦­® Ї®пб­Ёвм в Є. Џгбвм г ­ б Ґбвм ¤ўҐ бв®ЇЄЁ
Є ав®зҐЄ, ®вб®авЁа®ў ­­ле Ї®  «д ўЁвг. Њл ᮥ¤Ё­пҐ¬ Ёе ў ®¤­г
бв®ЇЄг, ўлЎЁа п Є ¦¤л© а § вг Ё§ ўҐае­Ёе Є ав®зҐЄ ®ЎҐЁе бв®Ї®Є,
Є®в®а п Ё¤Ґв а ­миҐ ў  «д ўЁв­®¬ Ї®ап¤ЄҐ.

1.2.20. „ ­л ¤ў  ¬ ббЁў  x[1] <= ... <= x[k] Ё y[1] <= ...
<= y[l]. Ќ ©вЁ Ёе "ЇҐаҐбҐзҐ­ЁҐ", в.Ґ. ¬ ббЁў z[1] <= ... <=
z[m], ᮤҐа¦ йЁ© Ёе ®ЎйЁҐ н«Ґ¬Ґ­вл, ЇаЁзҐ¬ Єа в­®бвм Є ¦¤®Ј®
н«Ґ¬Ґ­в  ў ¬ ббЁўҐ z а ў­пҐвбп ¬Ё­Ё¬г¬г Ё§ ҐЈ® Єа в­®б⥩ ў ¬ б-
бЁў е x Ё y. —Ёб«® ¤Ґ©бвўЁ© Ї®ап¤Є  k+l.

1.2.21. „ ­л ¤ў  ¬ ббЁў  x[1]<=...<=x[k] Ё y[1]<=...<=y[l]
Ё зЁб«® q. Ќ ©вЁ б㬬㠢Ё¤  x[i]+y[j], ­ ЁЎ®«ҐҐ Ў«Ё§Єго Є зЁб«г
q. (—Ёб«® ¤Ґ©бвўЁ© Ї®ап¤Є  k+l, ¤®Ї®«­ЁвҐ«м­ п Ї ¬пвм - дЁЄбЁа®-
ў ­­®Ґ зЁб«® 楫ле ЇҐаҐ¬Ґ­­ле, б ¬Ё ¬ ббЁўл ¬Ґ­пвм ­Ґ а §аҐи Ґв-
бп.)
“Є § ­ЁҐ. Ќ ¤® ­ ©вЁ ¬Ё­Ё¬ «м­®Ґ а ббв®п­ЁҐ ¬Ґ¦¤г н«Ґ¬Ґ­в -
¬Ё x[1]<=...<=x[k] Ё q-y[l]<=..<=q-y[1], зв® ­Ґваг¤­® ᤥ« вм ў
室Ґ Ёе б«Ёп­Ёп ў ®¤Ё­ (ў®®Ўа ¦ Ґ¬л©) ¬ ббЁў.

1.2.22. (Ё§ Є­ЁЈЁ „.ѓаЁб ) ЌҐЄ®в®а®Ґ зЁб«® ᮤҐа¦Ёвбп ў
Є ¦¤®¬ Ё§ ваҐе 楫®зЁб«Ґ­­ле ­ҐгЎлў ойЁе ¬ ббЁў®ў x[1] <= ... <=
x[p], y[1] <= ... <= y[q], z[1] <= ... <= z[r]. Ќ ©вЁ ®¤­® Ё§
в ЄЁе зЁбҐ«. —Ёб«® ¤Ґ©бвўЁ© ¤®«¦­® Ўлвм Ї®ап¤Є  p + q + r.

ђҐиҐ­ЁҐ.

p1:=1; q1=1; r1:=1;
{Ё­ў аЁ ­в: x[p1]..x[p], y[q1]..y[q], z[r1]..z[r]
ᮤҐа¦ в ®ЎйЁ© н«Ґ¬Ґ­в }
while not ((x[p1]=y[q1]) and (y[q1]=z[r1])) do begin
| if x[p1]<y[q1] then begin
| | p1:=p1+1;
| end else if y[q1]<z[r1] then begin
| | q1:=q1+1;
| end else if z[r1]<x[p1] then begin
| | r1:=r1+1;
| end else begin
| | { в Є ­Ґ Ўлў Ґв }
| end;
end;
{x[p1] = y[q1] = z[r1]}
writeln (x[p1]);

1.2.23. ’  ¦Ґ § ¤ з , в®«мЄ® § а ­ҐҐ ­Ґ Ё§ўҐбв­®, бгйҐбвўг-
Ґв «Ё ®ЎйЁ© н«Ґ¬Ґ­в ў ваҐе ­ҐгЎлў ойЁе ¬ ббЁў е Ё вॡгҐвбп нв®
ўлпб­Ёвм (Ё ­ ©вЁ ®¤Ё­ Ё§ ®ЎйЁе н«Ґ¬Ґ­в®ў, Ґб«Ё ®­Ё Ґбвм).

1.2.24. ќ«Ґ¬Ґ­в ¬Ё ¬ ббЁў  a[1..n] пў«повбп ­ҐгЎлў ойЁҐ
¬ ббЁўл [1..m] 楫ле зЁбҐ« (a: array [1..n] of array [1..m] of
integer; a[1][1] <= ... <= a[1][m], ..., a[n][1] <= ... <=
a[n][m]). €§ўҐбв­®, зв® бгйҐбвўгҐв зЁб«®, ўе®¤п饥 ў® ўбҐ ¬ ббЁ-
ўл a[i] (бгйҐбвўгҐв в Є®Ґ е, зв® ¤«п ўбпЄ®Ј® i Ё§ [1..n]
­ ©¤свбп j Ё§ [1..m], ¤«п Є®в®а®Ј® a[i][j]=x). Ќ ©вЁ ®¤­® Ё§ в -
ЄЁе зЁбҐ« е.

ђҐиҐ­ЁҐ. ‚ўҐ¤Ґ¬ ¬ ббЁў b[1]..b[n], ®в¬Ґз ойЁ© ­ з «® "®бв -
о饩бп з бвЁ" ¬ ббЁў®ў a[1]..a[n].

for k:=1 to n do begin
| b[k]:=1;
end;
eq := true;
for k := 2 to n do begin
| eq := eq and (a[1][b[1]] = a[k][b[k]]);
end;
{Ё­ў аЁ ­в: ®бв ўиЁҐбп з бвЁ ЇҐаҐбҐЄ овбп, в.Ґ. бгйҐбвўгҐв
в Є®Ґ е, зв® ¤«п ўбпЄ®Ј® i Ё§ [1..n] ­ ©¤свбп j Ё§ [1..m],
­Ґ ¬Ґ­м襥 b[i], ¤«п Є®в®а®Ј® a[i][j] = е; eq <=> ЇҐаўлҐ
н«Ґ¬Ґ­вл ®бв ўиЁебп з б⥩ а ў­л}
while not eq do begin
| s := 1; k := 1;
| {a[s][b[s]] - ¬Ё­Ё¬ «м­®Ґ б।Ё a[1][b[1]]..a[k][b[k]]}
| while k <> n do begin
| | k := k + 1;
| | if a[k][b[k]] < a[s][b[s]] then begin
| | | s := k;
| | end;
| end;
| {a[s][b[s]] - ¬Ё­Ё¬ «м­®Ґ б।Ё a[1][b[1]]..a[n][b[n]]}
| b [s] := b [s] + 1;
| for k := 2 to n do begin
| | eq := eq and (a[1][b[1]] = a[k][b[k]]);
| end;
end;
writeln (a[1][b[1]]);

1.2.25. ЏаЁўҐ¤Ґ­­®Ґ аҐиҐ­ЁҐ ЇаҐ¤л¤г饩 § ¤ зЁ вॡгҐв Ї®-
ап¤Є  m*n*n ¤Ґ©бвўЁ©. ЏаЁ¤г¬ вм бЇ®б®Ў б зЁб«®¬ ¤Ґ©бвўЁ© Ї®ап¤Є 
m*n.
“Є § ­ЁҐ. ЏаЁ¤Ґвбп Ї®¦Ґавў®ў вм бЁ¬¬ҐваЁҐ© Ё ўлЎа вм ®¤­г
Ё§ бва®Є §  ®б­®ў­го. „ўЁЈ пбм Ї® ®б­®ў­®© бва®ЄҐ, Ї®¤¤Ґа¦Ёў Ґ¬
в Є®Ґ ᮮ⭮襭ЁҐ: ў® ўбҐе ®бв «м­ле бва®Є е ®в¬ҐзҐ­ ¬ ЄбЁ-
¬ «м­л© н«Ґ¬Ґ­в, ­Ґ ЇаҐў®б室пйЁ© ⥪г饣® н«Ґ¬Ґ­в  ®б­®ў­®©
бва®ЄЁ.

1.2.26. („ў®Ёз­л© Ї®ЁбЄ) „ ­  Ї®б«Ґ¤®ў вҐ«м­®бвм x[1] <=
... <= x[n] 楫ле зЁбҐ« Ё зЁб«® a. ‚лпб­Ёвм, ᮤҐа¦Ёвбп «Ё a ў
нв®© Ї®б«Ґ¤®ў вҐ«м­®бвЁ, в. Ґ. бгйҐбвўгҐв «Ё i Ё§ 1..n, ¤«п Є®-
в®а®Ј® x[i]=a. (Љ®«ЁзҐбвў® ¤Ґ©бвўЁ© Ї®ап¤Є  log n.)

ђҐиҐ­ЁҐ. (ЏаҐ¤Ї®« Ј Ґ¬, зв® n > 0.)

l := 1; r := n+1;
{Ґб«Ё a Ґбвм ў®®ЎйҐ, в® Ґбвм Ё б।Ё x[l]..x[r-1], r > l}
while r - l <> 1 do begin
| m := l + (r-l) div 2 ;
| {l < m < r }
| if x[m] <= a then begin
| | l := m;
| end else begin {x[m] > a}
| | r := m;
| end;
end;
(ЋЎа вЁвҐ ў­Ё¬ ­ЁҐ, зв® Ё ў б«гз Ґ x[m] = a Ё­ў аЁ ­в ­Ґ ­ аги -
Ґвбп.)
Љ ¦¤л© а § r-l 㬥­ми Ґвбп ЇаЁ¬Ґа­® ў¤ў®Ґ, ®вЄг¤  Ё ўл⥪ -
Ґв вॡ㥬 п ®жҐ­Є  зЁб«  ¤Ґ©бвўЁ©.
‡ ¬Ґз ­ЁҐ.
l + (r-l) div 2 = (2l + (r-l)) div 2 = (r+l) div 2.

1.2.27. (€§ Є­ЁЈЁ „.ѓаЁб ) „ ­ ¬ ббЁў x: array [1..n] of
array [1..m] of integer, гЇ®а冷祭­л© Ї® "бва®Є ¬" Ё Ї®
"бв®«Ўж ¬":
x[i][j] <= x[i+1][j],
x[i][j] <= x[i][j+1]
Ё зЁб«® a. ’ॡгҐвбп ўлпб­Ёвм, ўбваҐз Ґвбп «Ё a б।Ё x[i][j].

ђҐиҐ­ЁҐ. ЏаҐ¤бв ў«пп ᥡҐ ¬ ббЁў a Є Є ¬ ваЁжг (Їаאַ-
гЈ®«м­ЁЄ, § Ї®«­Ґ­­л© зЁб« ¬Ё), ¬л ўлЎҐаҐ¬ Їаאַ㣮«м­ЁЄ, ў Є®-
в®а®¬ в®«мЄ® Ё ¬®¦Ґв ᮤҐа¦ вмбп a, Ё Ўг¤Ґ¬ ҐЈ® бг¦ вм. Џаאַ-
гЈ®«м­ЁЄ нв®в Ўг¤Ґв ᮤҐа¦ вм x[i][j] ЇаЁ 1<=i<=l Ё k<=j<=m.
1 k m
-----------------------------------
1| |***********|
| |***********|
| |***********|
l| |***********|
|---------------------------------|
| |
n| |
-----------------------------------
(¤®ЇгбЄ овбп ЇгбвлҐ Їаאַ㣮«м­ЁЄЁ ЇаЁ l = 0 Ё k = m+1).

l:=n; k:=1;
{l>=0, k<=m+1, Ґб«Ё a Ґбвм, в® ў ®ЇЁб ­­®¬ Їаאַ㣮«м­ЁЄҐ}
while (l > 0) and (k < m+1) and (x[l][k] <> a) do begin
| if x[l][k] < a then begin
| | k := k + 1; {«Ґўл© бв®«ЎҐж ­Ґ ᮤҐа¦Ёв a, г¤ «пҐ¬ ҐЈ®}
| end else begin {x[l][k] > a}
| | l := l - 1; {­Ё¦­пп бва®Є  ­Ґ ᮤҐа¦Ёв a, г¤ «пҐ¬ ҐҐ}
| end;
end;
{x[l][k] = a Ё«Ё Їаאַ㣮«м­ЁЄ Їгбв }
answer:= (l > 0) and (k < m+1) ;

‡ ¬Ґз ­ЁҐ. ‡¤Ґбм в  ¦Ґ ®иЁЎЄ : x[l][k] ¬®¦Ґв ®Є § вмбп ­Ґ-
®ЇаҐ¤Ґ«Ґ­­л¬. (…с ЁбЇа ў«Ґ­ЁҐ ЇаҐ¤®бв ў«пҐвбп зЁв вҐ«о.)

1.2.28. (Њ®бЄ®ўбЄ п ®«Ё¬ЇЁ ¤  Ї® Їа®Ја ¬¬Ёа®ў ­Ёо) „ ­ ­Ґ-
гЎлў ойЁ© ¬ ббЁў Ї®«®¦ЁвҐ«м­ле 楫ле зЁбҐ« a[1] <= a[2] <=...<=
a[n]. Ќ ©вЁ ­ Ё¬Ґ­м襥 楫®Ґ Ї®«®¦ЁвҐ«м­®Ґ зЁб«®, ­Ґ ЇаҐ¤бв ўЁ-
¬®Ґ ў ўЁ¤Ґ бг¬¬л ­ҐбЄ®«мЄЁе н«Ґ¬Ґ­в®ў нв®Ј® ¬ ббЁў  (Є ¦¤л© н«Ґ-
¬Ґ­в ¬ ббЁў  ¬®¦Ґв Ўлвм ЁбЇ®«м§®ў ­ ­Ґ Ў®«ҐҐ ®¤­®Ј® а § ). —Ёб«®
¤Ґ©бвўЁ© Ї®ап¤Є  n.

ђҐиҐ­ЁҐ. Џгбвм Ё§ўҐбв­®, зв® зЁб« , ЇаҐ¤бв ўЁ¬лҐ ў ўЁ¤Ґ
б㬬л н«Ґ¬Ґ­в®ў a[1],...,a[k], § Ї®«­пов ®в१®Є ®в 1 ¤® ­ҐЄ®в®-
а®Ј® N. …б«Ё a[k+1] > N+1, в® N+1 Ё Ўг¤Ґв ¬Ё­Ё¬ «м­л¬ зЁб«®¬, ­Ґ
ЇаҐ¤бв ўЁ¬л¬ ў ўЁ¤Ґ б㬬л н«Ґ¬Ґ­в®ў ¬ ббЁў  a[1]..a[n]. …б«Ё ¦Ґ
a[k+1] <= N+1, в® зЁб« , ЇаҐ¤бв ўЁ¬лҐ ў ўЁ¤Ґ б㬬л н«Ґ¬Ґ­в®ў
a[1]..a[k+1], § Ї®«­пов ®в१®Є ®в 1 ¤® N+a[k+1].

k := 0; N := 0;
{Ё­ў аЁ ­в: зЁб« , ЇаҐ¤бв ўЁ¬лҐ ў ўЁ¤Ґ б㬬л н«Ґ¬Ґ­в®ў ¬ ббЁў 
a[1]..a[k], § Ї®«­пов ®в१®Є 1..N}
while (k <> n) and (a[k+1] <= N+1) do begin
| N := N + a[k+1];
| k := k + 1;
end;
{(k = n) Ё«Ё (a[k+1] > N+1); ў ®Ў®Ёе б«гз пе ®вўҐв N+1}
writeln (N+1);

(‘­®ў  в®в ¦Ґ ¤ҐдҐЄв: ў гб«®ўЁЁ жЁЄ«  ЇаЁ «®¦­®¬ ЇҐаў®¬ гб«®ўЁЁ
ўв®а®Ґ ­Ґ ®ЇаҐ¤Ґ«Ґ­®.)

1.2.29. („«п §­ Є®¬ле б ®б­®ў ¬Ё  «ЈҐЎал) ‚ 楫®зЁб«Ґ­­®¬
¬ ббЁўҐ a[1]..a[n] еа ­Ёвбп ЇҐаҐбв ­®ўЄ  зЁбҐ« 1..n (Є ¦¤®Ґ Ё§
зЁбҐ« ўбваҐз Ґвбп Ї® ®¤­®¬г а §г).
( ) ЋЇаҐ¤Ґ«Ёвм зҐв­®бвм ЇҐаҐбв ­®ўЄЁ. (€ ў ( ), Ё ў (Ў) Є®-
«ЁзҐбвў® ¤Ґ©бвўЁ© Ї®ап¤Є  n.)
(Ў) ЌҐ ЁбЇ®«м§гп ¤агЈЁе ¬ ббЁў®ў, § ¬Ґ­Ёвм ЇҐаҐбв ­®ўЄг ­ 
®Ўа в­го (Ґб«Ё ¤® а Ў®вл Їа®Ја ¬¬л a[i]=j, в® Ї®б«Ґ ¤®«¦­® Ўлвм
a[j]=i).

“Є § ­ЁҐ. ( ) —Ґв­®бвм ЇҐаҐбв ­®ўЄЁ ®ЇаҐ¤Ґ«пҐвбп Є®«Ё-
зҐбвў®¬ жЁЄ«®ў. —в®Ўл ®в«Ёз вм 㦥 Їа®©¤Ґ­­лҐ жЁЄ«л, г Ёе н«Ґ-
¬Ґ­в®ў ¬®¦­®, ­ ЇаЁ¬Ґа, ¬Ґ­пвм §­ Є. (Ў) ЋЎа йҐ­ЁҐ Їа®Ё§ў®¤Ё¬ Ї®
жЁЄ« ¬.

1.2.30. „ ­ ¬ ббЁў a[1..n] Ё зЁб«® b. ЏҐаҐбв ўЁвм зЁб«  ў
¬ ббЁўҐ в ЄЁ¬ ®Ўа §®¬, зв®Ўл б«Ґў  ®в ­ҐЄ®в®а®© Ја ­Ёжл бв®п«Ё
зЁб« , ¬Ґ­миЁҐ Ё«Ё а ў­лҐ b,   бЇа ў  ®в Ја ­Ёжл - Ў®«миЁҐ Ё«Ё
а ў­лҐ b.

ђҐиҐ­ЁҐ.

l:=0; r:=n;
{Ё­ў аЁ ­в: a[1]..a[l]<=b; a[r+1]..a[n]>=b}
while l <> r do begin
| if a[l+1] <= b then begin
| | l:=l+1;
| end else if a[r] >=b then begin
| | r:=r-1;
| end else begin {a[l+1]>b; a[r]<b}
| | Ї®¬Ґ­пвм a[l+1] Ё a[r]
| | l:=l+1; r:+r-1;
| end;
end;

1.2.31. ’  ¦Ґ § ¤ з , ­® вॡгҐвбп, зв®Ўл б­ з «  и«Ё н«Ґ-
¬Ґ­вл, ¬Ґ­миЁҐ b, § вҐ¬ а ў­лҐ b,   «Ёим § вҐ¬ Ў®«миЁҐ b.

ђҐиҐ­ЁҐ. ’ҐЇҐам Ї®вॡговбп ваЁ Ја ­Ёжл: ¤® ЇҐаў®© Ўг¤гв
Ё¤вЁ н«Ґ¬Ґ­вл, ¬Ґ­миЁҐ b, ®в ЇҐаў®© ¤® ўв®а®© - а ў­лҐ b, § вҐ¬
­ҐЁ§ўҐбв­® Є ЄЁҐ ¤® ваҐв쥩,   Ї®б«Ґ ваҐв쥩 - Ў®«миЁҐ b. (Ѓ®«ҐҐ
бЁ¬¬ҐваЁз­®Ґ аҐиҐ­ЁҐ ЁбЇ®«м§®ў «® Ўл зҐвлॠЈа ­Ёжл, ­® ўап¤ «Ё
ЁЈа  бв®Ёв ᢥз.) ‚ Є зҐб⢥ ®зҐаҐ¤­®Ј® а бб¬ ваЁў Ґ¬®Ј® н«Ґ¬Ґ­-
в  ЎҐаҐ¬ н«Ґ¬Ґ­в бЇа ў  ®в б।­Ґ© Ја ­Ёжл.

l:=0; m:=0; r:=n;
{Ё­ў аЁ ­в: a[1..l]<b; a[l+1..m]=b; a[r+1]..a[n]>b}
while m <> r do begin
| if a[m+1]=b then begin
| | m:=m+1;
| end else if a[m+1]>b then begin
| | ®Ў¬Ґ­пвм a[m+1] Ё a[r]
| | r:=r-1;
| end else begin {a[m+1]<b}
| | ®Ў¬Ґ­пвм a[m+1] Ё a[l+1]
| | l:=l+1; m:=m+1;
end;

1.2.32. (ў аЁ ­в ЇаҐ¤л¤г饩 § ¤ зЁ, ­ §ў ­­л© ў Є­ЁЈҐ
„Ґ©Єбвал § ¤ зҐ© ® Ј®«« ­¤бЄ®¬ д« ЈҐ) ‚ ¬ ббЁўҐ бв®пв зЁб«  0, 1
Ё 2. ЏҐаҐбв ўЁвм Ёе ў Ї®ап¤ЄҐ ў®§а бв ­Ёп, Ґб«Ё Ґ¤Ё­б⢥­­®©
а §аҐиҐ­­®© ®ЇҐа жЁҐ© (Ї®¬Ё¬® з⥭Ёп) ­ ¤ ¬ ббЁў®¬ пў«пҐвбп ЇҐ-
аҐбв ­®ўЄ  ¤ўге н«Ґ¬Ґ­в®ў.

1.2.33. „ ­ ¬ ббЁў a[1]..a[n] Ё зЁб«® m<=n. „«п Є ¦¤®©
ЈагЇЇл Ё§ m бв®пйЁе а冷¬ з«Ґ­®ў (в ЄЁе ЈагЇЇ, ®зҐўЁ¤­®, n-m+1)
ўлзЁб«Ёвм ҐҐ б㬬г. ЋЎйҐҐ зЁб«® ¤Ґ©бвўЁ© ¤®«¦­® Ўлвм Ї®ап¤Є  n.

ђҐиҐ­ЁҐ. ЏҐаҐе®¤п ®в ЈагЇЇл Є б®бҐ¤­Ґ©, ¬л ¤®Ў ў«пҐ¬ ®¤Ё­
з«Ґ­,   ¤агЈ®© ўлзЁв Ґ¬.

1.2.34. „ ­  Єў ¤а в­ п в Ў«Ёж  a[1..n][1..n] Ё зЁб«® m<=n.
„«п Є ¦¤®Ј® Єў ¤а в  а §¬Ґа  m ­  m ў нв®© в Ў«ЁжҐ ўлзЁб«Ёвм
б㬬г бв®пйЁе ў ­Ґ¬ зЁбҐ«. ЋЎйҐҐ зЁб«® ¤Ґ©бвўЁ© ¤®«¦­® Ўлвм Ї®-
ап¤Є  n*n.

ђҐиҐ­ЁҐ. ‘­ з «  ¤«п Є ¦¤®Ј® Ј®аЁ§®­в «м­®Ј® Їаאַ㣮«м­ЁЄ 
а §¬Ґа®¬ n ­  1 ўлзЁб«пҐ¬ б㬬г бв®пйЁе ў ­Ґ¬ зЁбҐ«. (ЏаЁ б¤ўЁЈҐ
в Є®Ј® Їаאַ㣮«м­ЁЄ  Ї® Ј®аЁ§®­в «Ё ­  1 ­г¦­® ¤®Ў ўЁвм ®¤­®
зЁб«® Ё ®¤­® ўлзҐбвм.) ‡ вҐ¬, ЁбЇ®«м§гп нвЁ б㬬л, ўлзЁб«пҐ¬
бг¬¬л ў Єў ¤а в е. (ЏаЁ б¤ўЁЈҐ Єў ¤а в  Ї® ўҐавЁЄ «Ё ¤®Ў ў«пҐвбп
Ї®«®бЄ ,   ¤агЈ п Ї®«®бЄ  гЎ ў«пҐвбп.)

1.3. €­¤гЄвЁў­лҐ дг­ЄжЁЁ (Ї® Ђ.ѓ.Љг譨७Є®).

Џгбвм M - ­ҐЄ®в®а®Ґ ¬­®¦Ґбвў®. ”г­ЄжЁп f,  аЈг¬Ґ­в ¬Ё Є®в®-
а®© пў«повбп Ї®б«Ґ¤®ў вҐ«м­®бвЁ н«Ґ¬Ґ­в®ў ¬­®¦Ґбвў  M,   §­ зҐ-
­Ёп¬Ё - н«Ґ¬Ґ­вл ­ҐЄ®в®а®Ј® ¬­®¦Ґбвў  N, ­ §лў Ґвбп Ё­¤гЄвЁў­®©,
Ґб«Ё ҐҐ §­ зҐ­ЁҐ ­  Ї®б«Ґ¤®ў вҐ«м­®бвЁ x[1]..x[n] ¬®¦­® ў®ббв -
­®ўЁвм Ї® ҐҐ §­ зҐ­Ёо ­  Ї®б«Ґ¤®ў вҐ«м­®бвЁ x[1]..x[n-1] Ё Ї®
x[n], в. Ґ. Ґб«Ё бгйҐбвўгҐв дг­ЄжЁп F Ё§ N*M (¬­®¦Ґбвў® Ї а
<n,m>, Ј¤Ґ n - н«Ґ¬Ґ­в ¬­®¦Ґбвў  N,   m - н«Ґ¬Ґ­в ¬­®¦Ґбвў  M) ў
N, ¤«п Є®в®а®©

f(<x[1],...,x[n]>) = F (f (<x[1],...,x[n-1]>), x[n]).

‘奬   «Ј®аЁв¬  ўлзЁб«Ґ­Ёп Ё­¤гЄвЁў­®© дг­ЄжЁЁ:

k := 0; f := f0;
{Ё­ў аЁ ­в: f - §­ зҐ­ЁҐ дг­ЄжЁЁ ­  <x[1],...,x[k]>}
while k<> n do begin
| k := k + 1;
| f := F (f, x[k]);
end;

‡¤Ґбм f0 - §­ зҐ­ЁҐ дг­ЄжЁЁ ­  Їгбв®© Ї®б«Ґ¤®ў вҐ«м­®бвЁ
(Ї®б«Ґ¤®ў вҐ«м­®бвЁ ¤«Ё­л 0). …б«Ё дг­ЄжЁп f ®ЇаҐ¤Ґ«Ґ­  в®«мЄ®
­  ­ҐЇгбвле Ї®б«Ґ¤®ў вҐ«м­®бвпе, в® ЇҐаў п бва®Є  § ¬Ґ­пҐвбп ­ 
"k := 1; f := f (<x[1]>);".

€­¤гЄвЁў­лҐ а биЁаҐ­Ёп.

…б«Ё дг­ЄжЁп f ­Ґ пў«пҐвбп Ё­¤гЄвЁў­®©, Ї®«Ґ§­® ЁбЄ вм ҐҐ
Ё­¤гЄвЁў­®Ґ а биЁаҐ­ЁҐ - в Єго Ё­¤гЄвЁў­го дг­ЄжЁо g, §­ зҐ­Ёп
Є®в®а®© ®ЇаҐ¤Ґ«пов §­ зҐ­Ёп f (нв® §­ зЁв, зв® бгйҐбвўгҐв в Є п
дг­ЄжЁп t, зв® f (<x[1]...x[n]>) = t (g (<x[1]...x[n]>)) ЇаЁ
ўбҐе <x[1]...x[n]>). Њ®¦­® ¤®Є § вм, зв® б।Ё ўбҐе Ё­¤гЄвЁў­ле
а биЁаҐ­Ё© бгйҐбвўгҐв ¬Ё­Ё¬ «м­®Ґ а биЁаҐ­ЁҐ F (¬Ё­Ё¬ «м­®бвм
®§­ з Ґв, зв® ¤«п «оЎ®Ј® Ё­¤гЄвЁў­®Ј® а биЁаҐ­Ёп g §­ зҐ­Ёп F
®ЇаҐ¤Ґ«повбп §­ зҐ­Ёп¬Ё g).

1.3.1. “Є § вм Ё­¤гЄвЁў­лҐ а биЁаҐ­Ёп ¤«п б«Ґ¤гойЁе
дг­ЄжЁ©:
 ) б।­ҐҐ  аЁд¬ҐвЁзҐбЄ®Ґ Ї®б«Ґ¤®ў вҐ«м­®бвЁ ўҐйҐб⢥­­ле
зЁбҐ«;
Ў) зЁб«® н«Ґ¬Ґ­в®ў Ї®б«Ґ¤®ў вҐ«м­®б⨠楫ле зЁбҐ«, а ў­ле ҐҐ
¬ ЄбЁ¬ «м­®¬г н«Ґ¬Ґ­вг;
ў) ўв®а®© Ї® ўҐ«ЁзЁ­Ґ н«Ґ¬Ґ­в Ї®б«Ґ¤®ў вҐ«м­®б⨠楫ле зЁбҐ«
(в®в, Є®в®ал© Ўг¤Ґв ўв®ал¬, Ґб«Ё ЇҐаҐбв ўЁвм з«Ґ­л ў ­ҐгЎлў о饬
Ї®ап¤ЄҐ);
Ј) ¬ ЄбЁ¬ «м­®Ґ зЁб«® Ё¤гйЁе Ї®¤ап¤ ®¤Ё­ Є®ўле н«Ґ¬Ґ­в®ў;
¤) ¬ ЄбЁ¬ «м­ п ¤«Ё­  ¬®­®в®­­®Ј® (­ҐгЎлў о饣® Ё«Ё ­Ґў®§-
а бв о饣®) гз бвЄ  Ё§ Ё¤гйЁе Ї®¤ап¤ н«Ґ¬Ґ­в®ў ў Ї®б«Ґ¤®ў -
⥫쭮б⨠楫ле зЁбҐ«;
Ґ) зЁб«® ЈагЇЇ Ё§ Ґ¤Ё­Ёж, а §¤Ґ«Ґ­­ле ­г«п¬Ё (ў Ї®б«Ґ¤®ў -
⥫쭮бвЁ ­г«Ґ© Ё Ґ¤Ё­Ёж).

ђҐиҐ­ЁҐ.

 ) <б㬬  ўбҐе з«Ґ­®ў Ї®б«Ґ¤®ў вҐ«м­®бвЁ; ¤«Ё­ >;

Ў) <зЁб«® н«Ґ¬Ґ­в®ў, а ў­ле ¬ ЄбЁ¬ «м­®¬г; §­ зҐ­ЁҐ ¬ ЄбЁ-
¬ «м­®Ј®>;

ў) <­ ЁЎ®«миЁ© н«Ґ¬Ґ­в Ї®б«Ґ¤®ў вҐ«м­®бвЁ; ўв®а®© Ї® ўҐ«ЁзЁ­Ґ
н«Ґ¬Ґ­в>;

Ј) <¬ ЄбЁ¬ «м­®Ґ зЁб«® Ё¤гйЁе Ї®¤ап¤ ®¤Ё­ Є®ўле н«Ґ¬Ґ­в®ў; зЁб-
«® Ё¤гйЁе Ї®¤ап¤ ®¤Ё­ Є®ўле н«Ґ¬Ґ­в®ў ў Є®­жҐ Ї®б«Ґ¤®ў -
⥫쭮бвЁ; Ї®б«Ґ¤­Ё© н«Ґ¬Ґ­в Ї®б«Ґ¤®ў вҐ«м­®бвЁ>;

¤) <¬ ЄбЁ¬ «м­ п ¤«Ё­  ¬®­®в®­­®Ј® гз бвЄ ; ¬ ЄбЁ¬ «м­ п ¤«Ё­ 
­ҐгЎлў о饣® гз бвЄ  ў Є®­жҐ Ї®б«Ґ¤®ў вҐ«м­®бвЁ; ¬ ЄбЁ-
¬ «м­ п ¤«Ё­  ­Ґў®§а бв о饣® гз бвЄ  ў Є®­жҐ Ї®б«Ґ¤®ў -
⥫쭮бвЁ; Ї®б«Ґ¤­Ё© з«Ґ­ Ї®б«Ґ¤®ў вҐ«м­®бвЁ>;

Ґ) <зЁб«® ЈагЇЇ Ё§ Ґ¤Ё­Ёж, Ї®б«Ґ¤­Ё© з«Ґ­>.

1.3.2. (‘®®ЎйЁ« „.‚ аб®­®д쥢.) „ ­л ¤ўҐ Ї®б«Ґ¤®ў вҐ«м­®бвЁ
x[1]..x[n] Ё y[1]..y[k] 楫ле зЁбҐ«. ‚лпб­Ёвм, пў«пҐвбп «Ё ўв®-
а п Ї®б«Ґ¤®ў вҐ«м­®бвм Ї®¤Ї®б«Ґ¤®ў вҐ«м­®бвмо ЇҐаў®©, в. Ґ. ¬®¦-
­® «Ё Ё§ ЇҐаў®© ўлзҐаЄ­гвм ­ҐЄ®в®алҐ з«Ґ­л в Є, зв®Ўл ®бв « бм
ўв®а п. —Ёб«® ¤Ґ©бвўЁ© Ї®ап¤Є  n+k.

ђҐиҐ­ЁҐ. (1 ў аЁ ­в) Ѓг¤Ґ¬ бў®¤Ёвм § ¤ зг Є § ¤ зҐ
¬Ґ­м襣® а §¬Ґа .

n1:=n;
k1:=k;
{Ё­ў аЁ ­в: ЁбЄ®¬л© ®вўҐв <=> ў®§¬®¦­®бвм Ё§ x[1]..x[n1] Ї®-
«гзЁвм y[1]..y[k1] }
while (n1 > 0) and (k1 > 0) do begin
| if x[n1] = y[k1] then begin
| | n1 := n1 - 1;
| | k1 := k1 - 1;
| end else begin
| | n1 := n1 - 1;
| end;
end;
{n1 = 0 Ё«Ё k1 = 0; Ґб«Ё k1 = 0, в® ®вўҐв - ¤ , Ґб«Ё k1 <> 0
(Ё n1 = 0), в® ®вўҐв - ­Ґв}
answer := (k1 = 0);

Њл ЁбЇ®«м§®ў «Ё в®, зв® Ґб«Ё x[n1] = y[k1] Ё y[1]..y[k1] -
Ї®¤Ї®б«Ґ¤®ў вҐ«м­®бвм x[1]..x[n1], в® y[1]..y[k1-1] - Ї®¤Ї®б«Ґ-
¤®ў вҐ«м­®бвм x[1]..x[n1-1].

(2 ў аЁ ­в) ”г­ЄжЁп x[1]..x[n1] |-> (¬ ЄбЁ¬ «м­®Ґ k1, ¤«п
Є®в®а®Ј® y[1]..y[k1] Ґбвм Ї®¤Ї®б«Ґ¤®ў вҐ«м­®бвм x[1]..x[n1]) Ё­-
¤гЄвЁў­ .

1.3.3. „ ­л ¤ўҐ Ї®б«Ґ¤®ў вҐ«м­®бвЁ x[1]..x[n] Ё y[1]..y[k]
楫ле зЁбҐ«. Ќ ©вЁ ¬ ЄбЁ¬ «м­го ¤«Ё­г Ї®б«Ґ¤®ў вҐ«м­®бвЁ, пў«п-
о饩бп Ї®¤Ї®б«Ґ¤®ў вҐ«м­®бвмо ®ЎҐЁе Ї®б«Ґ¤®ў вҐ«м­®б⥩. Љ®«Ё-
зҐбвў® ®ЇҐа жЁ© Ї®ап¤Є  n*k.

ђҐиҐ­ЁҐ (б®®ЎйҐ­® Њ.Ќ.‚ ©­жў ©Ј®¬, Ђ.Њ.„Ё¬Ґ­в¬ ­®¬). ЋЎ®§-
­ зЁ¬ зҐаҐ§ f(n1,k1) ¬ ЄбЁ¬ «м­го ¤«Ё­г ®ЎйҐ© Ї®¤Ї®б«Ґ¤®ў -
⥫쭮бвЁ Ї®б«Ґ¤®ў вҐ«м­®б⥩ x[1]..x[n1] Ё y[1]..y[k1]. ’®Ј¤ 

x[n1] <> y[k1] => f(n1,k1) = max (f(n1,k1-1), f(n1-1,k1));
x[n1] = y[k1] => f(n1,k1) = max (f(n1,k1-1), f(n1-1,k1),
f(n1-1,k1-1)+1 );

(Џ®бЄ®«мЄг f(n1-1,k1-1)+1 >= f(n1,k1-1), f(n1-1,k1), ў® ўв®а®¬
б«гз Ґ ¬ ЄбЁ¬г¬ ваҐе зЁбҐ« ¬®¦­® § ¬Ґ­Ёвм ­  ваҐвмҐ Ё§ ­Ёе.)
Џ®н⮬㠬®¦­® § Ї®«­пвм в Ў«Ёжг §­ зҐ­Ё© дг­ЄжЁЁ f, Ё¬Ґойго
а §¬Ґа n*k. Њ®¦­® ®Ў®©вЁбм Ё Ї ¬пвмо Ї®ап¤Є  k (Ё«Ё n), Ґб«Ё Ё­-
¤гЄвЁў­® (Ї® n1) ўлЇЁб вм <f(n1,0), ..., f(n1,k)> (Є Є дг­ЄжЁп
®в n1 нв®в ­ Ў®а Ё­¤гЄвЁўҐ­).

1.3.4 (Ё§ Є­ЁЈЁ „.ѓаЁб ) „ ­  Ї®б«Ґ¤®ў вҐ«м­®бвм 楫ле зЁ-
ᥫ x[1],..., x[n]. Ќ ©вЁ ¬ ЄбЁ¬ «м­го ¤«Ё­г ҐҐ ў®§а бв о饩
Ї®¤Ї®б«Ґ¤®ў вҐ«м­®бвЁ (зЁб«® ¤Ґ©бвўЁ© Ї®ап¤Є  n*log(n)).

ђҐиҐ­ЁҐ. €бЄ®¬ п дг­ЄжЁп ­Ґ Ё­¤гЄвЁў­ , ­® Ё¬ҐҐв б«Ґ¤го饥
Ё­¤гЄвЁў­®Ґ а биЁаҐ­ЁҐ: ў ­ҐЈ® ўе®¤Ёв Ї®¬Ё¬® ¬ ЄбЁ¬ «м­®© ¤«Ё­л
ў®§а бв о饩 Ї®¤Ї®б«Ґ¤®ў вҐ«м­®бвЁ (®Ў®§­ зЁ¬ ҐҐ k) в Є¦Ґ Ё зЁб-
«  u[1],...,u[k], Ј¤Ґ u[i] = (¬Ё­Ё¬ «м­л© Ё§ Ї®б«Ґ¤­Ёе з«Ґ­®ў
ў®§а бв ойЁе Ї®¤Ї®б«Ґ¤®ў вҐ«м­®б⥩ ¤«Ё­л i). ЋзҐўЁ¤­®, u[1] <=
... <= u[k]. ЏаЁ ¤®Ў ў«Ґ­ЁЁ ­®ў®Ј® з«Ґ­  x §­ зҐ­Ёп u Ё k Є®а-
४вЁаговбп.

n1 := 1; k := 1; u[1] := x[1];
{Ё­ў аЁ ­в: k Ё u ᮮ⢥вбвўгов ¤ ­­®¬г ўлиҐ ®ЇЁб ­Ёо}
while n1 <> n do begin
| n1 := n1 + 1;
| ...
| {i - ­ ЁЎ®«м襥 Ё§ вҐе зЁбҐ« ®в१Є  1..k, ¤«п Є®в®-
| але u[i] < x[n1]; Ґб«Ё в ЄЁе ­Ґв, в® i=0 }
| if i = k then begin
| | k := k + 1;
| | u[k+1] := x[n1];
| end else begin {i < k, u[i] < x[n1] <= u[i+1] }
| | u[i+1] := x[n1];
| end;
end;

”а Ј¬Ґ­в ... ЁбЇ®«м§гҐв Ё¤Ґо ¤ў®Ёз­®Ј® Ї®ЁбЄ ; ў Ё­ў аЁ ­-
⥠гб«®ў­® Ї®« Ј Ґ¬ u[0] а ў­л¬ ¬Ё­гб ЎҐбЄ®­Ґз­®бвЁ,   u[k+1]
- Ї«об ЎҐбЄ®­Ґз­®бвЁ; ­ и  楫м: u[i] < x[n1] <= u[i+1].

i:=0; j:=k+1;
{u[i] < x[n1] <= u[j], j > i}
while (j - i) <> 1 do begin
| s := i + (j-i) div 2; {i < s < j}
| if u[s] >= x[n1] then begin
| | j := s;
| end else begin {u[s] < x[n1]}
| | i := s;
| end;
end;
{u[i] < x[n1] <= u[j], j-i = 1}

‡ ¬Ґз ­ЁҐ. Ѓ®«ҐҐ Їа®б⮥ (­® ­Ґ ¬Ё­Ё¬ «м­®Ґ) Ё­¤гЄвЁў­®Ґ
а биЁаҐ­ЁҐ Ї®«гзЁвбп, Ґб«Ё ¤«п Є ¦¤®Ј® i еа ­Ёвм ¬ ЄбЁ¬ «м­го
¤«Ё­г ў®§а бв о饩 Ї®¤Ї®б«Ґ¤®ў вҐ«м­®бвЁ, ®Є ­зЁў о饩бп ­ 
x[i]. ќв® а биЁаҐ­ЁҐ ЇаЁў®¤Ёв Є  «Ј®аЁв¬г б зЁб«®¬ ¤Ґ©бвўЁ© Ї®-
ап¤Є  n*n.

1.3.5. Љ ЄЁҐ Ё§¬Ґ­Ґ­Ёп ­г¦­® ў­ҐбвЁ ў аҐиҐ­ЁҐ ЇаҐ¤л¤г饩
§ ¤ зЁ, Ґб«Ё ­ ¤® ЁбЄ вм ¬ ЄбЁ¬ «м­го ­ҐгЎлў ойго Ї®б«Ґ¤®ў -
⥫쭮бвм?
Соседние файлы в папке Шень