ЏђЋѓђЂЊЊ€ђЋ‚ЂЌ€…: ’…Ћђ…Њ› € ‡Ђ„Ђ—€
Ќ…‘ЉЋ‹њЉЋ ‡ЂЊ…—ЂЌ€‰ ‚Њ…‘’Ћ Џђ…„€‘‹Ћ‚€џ
ЉЁЈ ЇЁб Ї® ¬ вҐаЁ « ¬ § пвЁ© Їа®Ја ¬¬Ёа®ў ЁҐ¬ б®
иЄ®«мЁЄ ¬Ё ¬ ⥬ вЁзҐбЄЁе Є« бб®ў иЄ®«л N 57.
ЉЁЈ ЇЁб ў гЎҐ¦¤ҐЁЁ, зв® Їа®Ја ¬¬Ёа®ў ЁҐ Ё¬ҐҐв бў®©
ЇаҐ¤¬Ґв, Ґ бў®¤пйЁ©бп Ё Є Є®ЄаҐвл¬ п§лЄ ¬ Ё бЁб⥬ ¬, Ё Є
¬Ґв®¤ ¬ Ї®бв஥Ёп Ўлбвале «Ј®аЁв¬®ў.
Љв®-в® ®¤ ¦¤л бЄ § «, зв® ¬®¦® гЎҐ¤Ёвм ў Їа ўЁ«м®бвЁ «Ј®аЁв-
¬ , ® Ґ ў Їа ўЁ«м®бвЁ Їа®Ја ¬¬л. Ћ¤ Ё§ 楫Ґ© ЄЁЈЁ - Ї®Їл-
в вмбп Їа®¤Ґ¬®бваЁа®ў вм, зв® нв® Ґ в Є.
‚ ЇаЁжЁЇҐ, ў®§¬®¦®бвм Їа ЄвЁзҐбЄ®Ј® ЁбЇ®«ҐЁп Їа®Ја ¬¬ Ґ пў-
«пҐвбп ҐЇаҐ¬Ґл¬ гб«®ўЁҐ¬ Ё§гзҐЁп Їа®Ја ¬¬Ёа®ў Ёп. Ћ¤ Є®
® пў«пҐвбп ᨫ쥩訬 бвЁ¬г«®¬ - ЎҐ§ в Є®Ј® бвЁ¬г« ўап¤ «Ё г
Є®Ј® еў вЁв ЁвҐаҐб Ё вҐаЇҐЁп.
‚лЎа л© ¦ а ЄЁЈЁ Ї® Ґ®Ўе®¤Ё¬®бвЁ ®Ја ЁзЁў Ґв ҐҐ "Їа®Ја ¬-
¬Ёа®ў ЁҐ¬ ў ¬ «®¬", ®бв ў«пп ў бв®а®Ґ Ґ®Ўе®¤Ё¬го з бвм Їа®Ј-
а ¬¬ЁбвбЄ®Ј® ®Ўа §®ў Ёп - а Ў®вг Ї® ¬®¤ЁдЁЄ жЁЁ Ў®«миЁе Їа®Ј-
а ¬¬. Ђўв®а Їа®¤®«¦ Ґв ¬Ґзв вм ® Ў®аҐ г祡ле Їа®Ја ¬¬ле бЁб-
⥬ нв «®®Ј® Є зҐбвў , ¤®бвгЇле ¤«п ¬®¤ЁдЁЄ жЁЁ иЄ®«мЁЄ ¬Ё.
Љ ¦Ґвбп, •® а бЄ § «, зв® нбвҐвЁзҐбЄ п ЇаҐ«Ґбвм Їа®Ја ¬¬л - нв®
Ґ аеЁвҐЄвг஥ Ё§«ЁиҐбвў®, в®, зв® ®в«Ёз Ґв ў Їа®Ја ¬¬Ёа®ў -
ЁЁ гбЇҐе ®в Ґг¤ зЁ. …б«Ё, аҐи п § ¤ зЁ Ё§ нв®© ЄЁЈЁ, зЁв ⥫м
Ї®згўбвўгҐв ЇаҐ«Ґбвм е®а®и® ЇЁб ®© Їа®Ја ¬¬л, ў Є®в®а®© "Ё
гЎ ўЁвм, Ё ЇаЁЎ ўЁвм", Ё ᮬҐЁп ў Їа ўЁ«м®бвЁ Є®в®а®© Є ¦гв-
бп Ґ«ҐЇл¬Ё, в® ўв®а Ўг¤Ґв бзЁв вм бў®о жҐ«м ¤®бвЁЈгв®©.
• а ЄвҐа Ј« ў а §«ЁзҐ: ў ®¤Ёе ЇаҐ¤« Ј Ґвбп Ў®а ¬ «® бўп§ -
ле ¤агЈ б ¤агЈ®¬ § ¤ з б аҐиҐЁп¬Ё, ў ¤агЈЁе Ї® бгйҐбвўг Ё§« -
Ј Ґвбп ®¤Ё-Ґ¤ЁбвўҐл© «Ј®аЁв¬. ’Ґ¬л Ј« ў ў® ¬®Ј®¬ ЇҐаҐбҐЄ -
овбп, Ё ¬л ЇаҐ¤Ї®з«Ё Є®Ґ-Є ЄЁҐ Ї®ўв®аҐЁп д®а¬ «мл¬ ббл«Є ¬.
“а®ўҐм ва㤮бвЁ § ¤ з Ё Ј« ў ўҐбм¬ а §«ЁзҐ. Њл бв а «Ёбм
ўЄ«озЁвм Є Є Їа®бвлҐ § ¤ зЁ, Є®в®алҐ ¬®Јгв Ўлвм Ї®«Ґ§л ¤«п -
зЁ ойЁе, в Є Ё ваг¤лҐ § ¤ зЁ, Є®в®алҐ ¬®Јгв Ї®б ¤Ёвм ў «г¦г Ё
бЁ«м®Ј® иЄ®«мЁЄ . (•®вм Ё ।Є®, ® нв® Ўлў Ґв Ї®«Ґ§®.)
‚ Є зҐб⢥ п§лЄ ¤«п § ЇЁбЁ Їа®Ја ¬¬ Ўл« ўлЎа Ї бЄ «м Џ бЄ «м
¤®бв з® Їа®бв Ё ҐбвҐб⢥, Ё¬ҐҐв ҐЇ«®еЁҐ ॠ«Ё§ жЁЁ ( ЇаЁ¬Ґа,
Turbo Pascal 3.0 Ё 5.0 дЁа¬л Borland) Ё Ї®§ў®«пҐв § ЇЁб вм аҐиҐ-
Ёп ўбҐе а бб¬ ваЁў Ґ¬ле § ¤ з. ‚®§¬®¦®, Њ®¤г« -2 Ё«Ё ЋЎҐа®
Ўл«Ё Ўл Ў®«ҐҐ Ё§пйл¬ ўлЎ®а®¬, ® Ї®Є зв® ®Ё ва㤥Ґ ¤®бвгЇл.
ЌҐг¤ зл© ®Їлв ЇЁб Ёп "Ї®Їг«пале" г祡ЁЄ®ў Ї® Їа®Ја ¬¬Ёа®ў -
Ёо гзЁв: ЁЄ Є®Ј® бобоЄ мп! ЇЁб вм ¤® в Є, зв®Ўл Ї®в®¬ б ¬Ё¬
Ўл«® Ґ бв뤮 Їа®зҐбвм.
Џа ЄвЁзҐбЄЁ ўбҐ § ¤ зЁ Ё «Ј®аЁв¬л, а §г¬ҐҐвбп, Ґ пў«повбп ®-
ўл¬Ё. (‚ ҐЄ®в®але ।ЄЁе б«гз пе ЇаЁўҐ¤Ґл ббл«ЄЁ Є®ЄаҐвго
ЄЁЈг Ё«Ё Є®ЄаҐв®Ј® 祫®ўҐЄ . ‘¬. в Є¦Ґ бЇЁб®Є ЄЁЈ ¤«п
¤ «мҐ©иҐЈ® з⥨п.) ‚¬Ґб⥠б ⥬ ¬л ¤ҐҐ¬бп, зв® ў ҐЄ®в®але
б«гз пе «Ј®аЁв¬л (Ё ®б®ЎҐ® ¤®Є § ⥫мбвў ) Ё§«®¦Ґл Ў®«ҐҐ Є®-
а®вЄ® Ё ®взҐв«Ёў®.
ќв® Ґ в®«мЄ® Ё Ґ бв®«мЄ® г祡ЁЄ ¤«п иЄ®«мЁЄ , бЄ®«мЄ® бЇа -
ў®зЁЄ Ё § ¤ зЁЄ ¤«п ЇаҐЇ®¤ ў ⥫п, Ј®в®ўп饣®бп Є § пвЁо.
ЋЎ " ўв®абЄЁе Їа ў е": Їа ў® д®а¬г«Ёа®ў вм § ¤ зг Ё ®Ўкпбпвм Ґс
аҐиҐЁҐ пў«пҐвбп Ґ®вз㦤 Ґ¬л¬ ҐбвҐбвўҐл¬ Їа ў®¬ ўбпЄ®Ј®, Єв®
нв® бЇ®б®ЎҐ. ‚ ᮮ⢥вбвўЁЁ б нвЁ¬ ⥪бв (ў ASCII Ё TeX-ўҐа-
бЁпе) пў«пҐвбп бў®Ў®¤® а бЇа®бва 塞묨. ‘ Ё¬ ¬®¦® ¤Ґ« вм
ўбс, зв® гЈ®¤®, Ё Ґб«Ё ‚л ўҐб«Ё ў ҐЈ® ®иЁЎЄЁ, Ґ гЄ § ў, зв®
®Ё ЇаЁ ¤«Ґ¦ в ‚ ¬, Ё«Ё ЁбЇ®«м§®ў «Ё ⥪бв ў Є®¬¬ҐазҐбЄЁе жҐ-
«пе, Ґ Ї®¤Ґ«ЁўиЁбм ЇаЁЎл«мо - Ѓ®Ј ‚ ¬ бг¤мп.
Ѓ« Ј®¤ а®бвЁ. џ а ¤ б«гз о Ї®Ў« Ј®¤ аЁвм ўбҐе, б ЄҐ¬ Ё¬Ґ« зҐбвм
б®ваг¤Ёз вм, ЇаҐЇ®¤ ў п Їа®Ја ¬¬Ёа®ў ЁҐ, ®б®ЎҐ® вҐе, Єв® Ўл«
"Ї® ¤агЈго бв®а®г Ў ааЁЄ ¤л".
Ќ … Џ Ћ Љ “ Џ Ђ ‰ ’ … ќ ’ “ Љ Ќ € ѓ “ !
(ЏаҐ¤гЇаҐ¦¤ҐЁҐ ўв®а )
‚ нв®© ЄЁЈҐ ЁзҐЈ® Ґ Ј®ў®аЁвбп ®Ў ®б®ЎҐ®бвпе BIOS ,
DOS , OS , GEM Ё Windows, ЇаҐ¤бв ў«пойЁе ®б®ўго б«®¦®бвм ЇаЁ
бв®п饬 Їа®Ја ¬¬Ёа®ў ЁЁ.
‚ Ґ© Ґв Ё б«®ў ®Ў ®ЎкҐЄв®-®аЁҐвЁа®ў ®¬ Їа®Ја ¬¬Ёа®-
ў ЁЁ, ®вЄалўиҐ¬ ®ўго нЇ®ег ў Ї®бв஥ЁЁ ¤а㦥б⢥ле Ё нд䥪-
вЁўле Їа®Ја ¬¬ле бЁб⥬.
€§ ҐҐ ‚л Ґ г§ ҐвҐ ® Ја дЁзҐбЄЁе ў®§¬®¦®бвпе Є®¬ЇмовҐа ,
ЎҐ§ Є®в®але Ґ¬лб«Ё¬® ᮢ६Ґ®Ґ Їа®Ја ¬¬Ёа®ў ЁҐ, ® Ў®Ј вб⢥
Ё а §®®Ўа §ЁЁ ¬Ёа ўЁ¤Ґ® ¤ ЇвҐа®ў.
ЌҐ а ббЄ § ® ў Ґ© Ё ® ЇЁб ЁЁ १Ё¤Ґвле Їа®Ја ¬¬,
в®Є®бвЁ ў§ Ё¬®¤Ґ©бвўЁп Є®в®але ¤®«¦Ґ § вм Є ¦¤л©.
€бЄгббвўҐл© ЁвҐ««ҐЄв, ®вЄалўиЁ© ®ўлҐ алЄЁ бЎлв ¤«п
Їа®Ја ¬¬®Ј® ®ЎҐбЇҐзҐЁп, ®Ў®©¤Ґ ЇаҐ§аЁвҐ«мл¬ ¬®«з ЁҐ¬.
ќЄбЇҐавлҐ бЁб⥬л, Є®в®алҐ ў ᪮஬ Ўг¤г饬 § ©¬гв ¬Ґбв®
а Ў®зҐ¬ бв®«Ґ Є ¦¤®Ј®, ¤ ¦Ґ Ґ гЇ®¬Ё овбп.
‹®ЈЁзҐбЄ®Ґ Їа®Ја ¬¬Ёа®ў ЁҐ, Ї®б⥯Ґ® ўлвҐбпо饥 гбв -
ॢ訩 ®ЇҐа в®ал© бвЁ«м Їа®Ја ¬¬Ёа®ў Ёп, Ґ § ва®гв®.
„а ¬ вЁзҐбЄЁ© Ї®ў®а®в ®в Ў § ¤ ле Є Ў § ¬ § Ё©, ўл§ў ў-
иЁ© ў ¦Ё§Ё ®ўго Їа®дҐббЁо -- Ё¦ҐҐа § Ё© -- ®бв «бп Ґ§ ¬Ґ-
зҐл¬ ўв®а®¬.
Џа®Ў«Ґ¬л ®в« ¤ЄЁ Ё б®Їа®ў®¦¤ҐЁп Їа®Ја ¬¬, § Ё¬ ойЁҐ, Ї®
®ЎйҐ¬г ¬ҐЁо Їа®дҐббЁ® «®ў, 90% ў Їа®Ја ¬¬Ёа®ў ЁЁ, ЁЈ®аЁаг-
овбп.
‚ ЄЁЈҐ ЁбЇ®«м§говбп «Ёим б ¬лҐ н«Ґ¬Ґв алҐ ў®§¬®¦®бвЁ
Ї бЄ «п. ЋЎиЁалҐ ў®§¬®¦®бвЁ, ЇаҐ¤®бв ў«пҐ¬лҐ ᮢ६Ґл¬Ё Ё-
⥣аЁа®ў л¬Ё Їа®Ја ¬¬л¬Ё б। ¬Ё, ®бв овбп Ґў®бвॡ®ў л¬Ё.
(ЌҐ Ј®ў®ап 㦥 ® ⮬, зв® Ї бЄ «м 㦥 ў®®ЎйҐ гбв ५, ўлвҐбҐ-
л© п§лЄ®¬ ‘Ё.)
€ЈагиҐзлҐ Ј®«®ў®«®¬ЄЁ, Є®в®ал¬ Ї®бўпйҐ ЄЁЈ , ЁЄ®¬г Ґ
г¦л. …б«Ё ¦Ґ ЇҐаҐ¤ ‚ ¬Ё ўбв Ґв ¤Ґ©бвўЁвҐ«м® ў ¦ п § ¤ з ,
Ґг¦Ґ«Ё ‚л Ґ бЇа ўЁвҐбм б Ґ© б ¬Ё, ЎҐ§ ҐЇа®иҐле гзЁвҐ«Ґ© Ё
б®ўҐвзЁЄ®ў?
Љ®а®зҐ Ј®ў®ап, Ї®ЄгЇ вм нвг ЄЁЈг Ј«гЇ® - ®б®ЎҐ® ⥯Ґам,
Є®Ј¤ ўл室Ёв бв®«мЄ® ЇҐаҐў®¤ле агЄ®ў®¤бвў, ЇЁб ле ў жЁўЁ-
«Ё§®ў ле бва е бв®пйЁ¬Ё Їа®дҐббЁ® « ¬Ё.
ѓ« ў 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. Љ ЄЁҐ Ё§¬ҐҐЁп 㦮 ўҐбвЁ ў аҐиҐЁҐ ЇаҐ¤л¤г饩
§ ¤ зЁ, Ґб«Ё ¤® ЁбЄ вм ¬ ЄбЁ¬ «мго ҐгЎлў ойго Ї®б«Ґ¤®ў -
⥫м®бвм?
ѓ« ў 2. Џ®а®¦¤ҐЁҐ Є®¬ЎЁ в®але ®ЎкҐЄв®ў.
‡¤Ґбм б®Ўа л § ¤ зЁ, ў Є®в®але вॡгҐвбп Ї®«гзЁвм ®¤Ё §
¤агЈЁ¬ ўбҐ н«Ґ¬Ґвл ҐЄ®в®а®Ј® ¬®¦Ґбвў .
2.1. ђ §¬ҐйҐЁп б Ї®ўв®аҐЁп¬Ё.
2.1.1. Ќ ЇҐз в вм ўбҐ Ї®б«Ґ¤®ў ⥫м®бвЁ ¤«Ёл k Ё§ зЁбҐ«
1..n.
ђҐиҐЁҐ. Ѓг¤Ґ¬ ЇҐз в вм Ёе ў «ҐЄбЁЄ®Ја дЁзҐбЄ®¬ Ї®ап¤ЄҐ
(Ї®б«Ґ¤®ў ⥫м®бвм a ЇаҐ¤иҐбвўгҐв Ї®б«Ґ¤®ў ⥫м®бвЁ b, Ґб«Ё
¤«п ҐЄ®в®а®Ј® s Ёе з «млҐ ®в१ЄЁ ¤«Ёл s а ўл, (s+1)-л©
з«Ґ Ї®б«Ґ¤®ў ⥫м®бвЁ a ¬ҐмиҐ). ЏҐаў®© Ўг¤Ґв Ї®б«Ґ¤®ў -
⥫м®бвм <1, 1, ..., 1>, Ї®б«Ґ¤Ґ© - Ї®б«Ґ¤®ў ⥫м®бвм <n, n,
..., n>. Ѓг¤Ґ¬ еа Ёвм Ї®б«Ґ¤оо ЇҐз в го Ї®б«Ґ¤®ў ⥫м®бвм
ў ¬ ббЁўҐ x[1]...x[k].
...x[1]...x[k] Ї®«®¦Ёвм а ўл¬ 1
... ЇҐз в вм x
...last[1]...last[k] Ї®«®¦Ёвм а ўл¬ n
while x <> last do begin
| ...x := б«Ґ¤гой п § x Ї®б«Ґ¤®ў ⥫м®бвм
| ... ЇҐз в вм x
end;
ЋЇЁиҐ¬, Є Є ¬®¦® ЇҐаҐ©вЁ ®в x Є б«Ґ¤го饩 Ї®б«Ґ¤®ў -
⥫м®бвЁ. ‘®Ј« б® ®ЇаҐ¤Ґ«ҐЁо, г б«Ґ¤го饩 Ї®б«Ґ¤®ў ⥫м®бвЁ
ЇҐаўлҐ s з«Ґ®ў ¤®«¦л Ўлвм в ЄЁ¬Ё ¦Ґ, (s+1)-л© - Ў®«миҐ. ќв®
ў®§¬®¦®, Ґб«Ё x[s+1] Ўл«® ¬ҐмиҐ n. ‘।Ё в ЄЁе s 㦮 ўлЎа вм
ЁЎ®«м襥 (Ё зҐ Ї®«гзҐ п Ї®б«Ґ¤®ў ⥫м®бвм Ґ Ўг¤Ґв ҐЇ®б-
।б⢥® б«Ґ¤го饩). ‘®®вўҐвбвўго饥 x[s+1] 㦮 㢥«ЁзЁвм
1. €в Є, ¤®, ¤ўЁЈ пбм б Є®ж Ї®б«Ґ¤®ў ⥫м®бвЁ, ©вЁ б ¬л©
Їа ўл© з«Ґ, ¬ҐмиЁ© n (® ©¤Ґвбп, в Є Є Є Ї® ЇаҐ¤Ї®«®¦ҐЁо
x<>last), 㢥«ЁзЁвм ҐЈ® 1, Ё¤гйЁҐ § Ё¬ з«Ґл Ї®«®¦Ёвм
а ўл¬Ё 1.
p:=k;
while not (x[p] < n) do begin
| p := p-1;
end;
{x[p] < n, x[p+1] =...= x[k] = n}
x[p] := x[p] + 1;
for i := p+1 to k do begin
| x[i]:=1;
end;
‡ ¬Ґз ЁҐ. …б«Ё з«Ґ ¬Ё Ї®б«Ґ¤®ў ⥫м®бвЁ бзЁв вм зЁб« Ґ
®в 1 ¤® n, ®в 0 ¤® n-1, в® ЇҐаҐе®¤ Є б«Ґ¤го饬г ᮮ⢥вбвўгҐв
ЇаЁЎ ў«ҐЁо 1 ў n-Ёз®© бЁб⥬Ґ бзЁб«ҐЁп.
2.1.2. ‚ ЇаҐ¤«®¦Ґ®¬ «Ј®аЁв¬Ґ ЁбЇ®«м§гҐвбп ба ўҐЁҐ ¤ўге
¬ ббЁў®ў x <> last. “бва Ёвм ҐЈ®, ¤®Ў ўЁў Ўг«ҐўбЄго ЇҐаҐ¬Ґго
l Ё ўЄ«озЁў ў Ёў аЁ в б®®в®иҐЁҐ l <=> Ї®б«Ґ¤®ў ⥫м®бвм x -
Ї®б«Ґ¤пп.
2.1.3. Ќ ЇҐз в вм ўбҐ Ї®¤¬®¦Ґбвў ¬®¦Ґбвў {1...k}.
ђҐиҐЁҐ. Џ®¤¬®¦Ґб⢠室пвбп ў® ў§ Ё¬® ®¤®§ 箬 б®-
®вўҐвбвўЁЁ б Ї®б«Ґ¤®ў ⥫м®бвп¬Ё г«Ґ© Ё Ґ¤ЁЁж ¤«Ёл k.
2.1.4. Ќ ЇҐз в вм ўбҐ Ї®б«Ґ¤®ў ⥫м®бвЁ Ё§ k Ї®«®¦ЁвҐ«мле
楫ле зЁбҐ«, г Є®в®але i-л© з«Ґ Ґ ЇаҐў®б室Ёв i.
2.2. ЏҐаҐбв ®ўЄЁ.
2.2.1. Ќ ЇҐз в вм ўбҐ ЇҐаҐбв ®ўЄЁ зЁбҐ« 1..n (в® Ґбвм Ї®б-
«Ґ¤®ў ⥫м®бвЁ ¤«Ёл n, ў Є®в®алҐ Є ¦¤®Ґ Ё§ зЁбҐ« 1..n ўе®¤Ёв
Ї® ®¤®¬г а §г).
ђҐиҐЁҐ. ЏҐаҐбв ®ўЄЁ Ўг¤Ґ¬ еа Ёвм ў ¬ ббЁўҐ x[1],...,
x[n] Ё ЇҐз в вм ў «ҐЄбЁЄ®Ја дЁзҐбЄ®¬ Ї®ап¤ЄҐ. (ЏҐаў®© ЇаЁ н⮬
Ўг¤Ґв ЇҐаҐбв ®ўЄ <1 2...n>, Ї®б«Ґ¤Ґ© - <n...2 1>.) „«п б®б-
в ў«ҐЁп «Ј®аЁв¬ ЇҐаҐе®¤ Є б«Ґ¤го饩 ЇҐаҐбв ®ўЄҐ § ¤ ¤Ё¬бп
ў®Їа®б®¬: ў Є Є®¬ б«гз Ґ k-л© з«Ґ ЇҐаҐбв ®ўЄЁ ¬®¦® 㢥«ЁзЁвм,
Ґ ¬Ґпп ЇаҐ¤л¤гйЁе? ЋвўҐв: Ґб«Ё ® ¬ҐмиҐ Є Є®Ј®-«ЁЎ® Ё§ б«Ґ¤г-
ойЁе з«Ґ®ў (з«Ґ®ў б ®¬Ґа ¬Ё Ў®«миҐ k). Њл ¤®«¦л ©вЁ -
ЁЎ®«м襥 k, ЇаЁ Є®в®а®¬ нв® в Є, в. Ґ. в Є®Ґ k, зв® x[k] <
x[k+1] > ... > x[n]. Џ®б«Ґ нв®Ј® x[k] 㦮 㢥«ЁзЁвм ¬ЁЁ-
¬ «мл¬ ў®§¬®¦л¬ бЇ®б®Ў®¬, в. Ґ. ©вЁ б।Ё x[k+1], ..., x[n]
Ё¬Ґм襥 зЁб«®, Ў®«м襥 ҐЈ®. Џ®¬Ґпў x[k] б Ё¬, ®бв Ґвбп а б-
Ї®«®¦Ёвм зЁб« б ®¬Ґа ¬Ё k+1, ..., n в Є, зв®Ўл ЇҐаҐбв ®ўЄ
Ўл« Ё¬Ґм襩, в® Ґбвм ў ў®§а бв о饬 Ї®ап¤ЄҐ. ќв® ®Ў«ҐЈз Ґвбп
⥬, зв® ®Ё 㦥 а бЇ®«®¦Ґл ў гЎлў о饬 Ї®ап¤ЄҐ.
Ђ«Ј®аЁв¬ ЇҐаҐе®¤ Є б«Ґ¤го饩 ЇҐаҐбв ®ўЄҐ.
{<x[1],...,x[n-1], x[n]> <> <n,...,2, 1>.}
k:=n-1;
{Ї®б«Ґ¤®ў ⥫м®бвм бЇа ў ®в k гЎлў ой п: x[k+1] >...> x[n]}
while x[k] > x[k+1] do begin
| k:=k-1;
end;
{x[k] < x[k+1] > ... > x[n]}
t:=k+1;
{t <=n, x[k+1] > ... > x[t] > x[k]}
while (t < n) and (x[t+1] > x[k]) do begin
| t:=t+1;
end;
{x[k+1] > ... > x[t] > x[k] > x[t+1] > ... > x[n]}
... ®Ў¬Ґпвм x[k] Ё x[t]
{x[k+1] > ... > x[n]}
... ЇҐаҐбв ўЁвм гз бв®Є x[k+1] ... x[n] ў ®Ўа ⮬ Ї®ап¤ЄҐ
‡ ¬Ґз ЁҐ. Џа®Ја ¬¬ Ё¬ҐҐв § Є®¬л© ¤ҐдҐЄв: Ґб«Ё t = n, в®
x[t+1] Ґ ®ЇаҐ¤Ґ«Ґ®.
2.2.2. Њ®¤ЁдЁжЁа®ў вм «Ј®аЁв¬ ЇҐаҐе®¤ Є б«Ґ¤го饩 ЇҐаҐб-
в ®ўЄҐ в Є, зв®Ўл ® б ¬ Їа®ўҐап«, Ґ пў«пҐвбп «Ё ¤ п ЇҐаҐб-
в ®ўЄ Ї®б«Ґ¤Ґ©.
2.3. Џ®¤¬®¦Ґбвў .
2.3.1. ЏҐаҐзЁб«Ёвм ўбҐ k-н«Ґ¬ҐвлҐ Ї®¤¬®¦Ґбвў ¬®¦Ґбвў
{1..n}.
ђҐиҐЁҐ. Ѓг¤Ґ¬ ЇаҐ¤бв ў«пвм Є ¦¤®Ґ Ї®¤¬®¦Ґбвў® Ї®б«Ґ¤®ў -
⥫м®бвмо x[1]..x[n] г«Ґ© Ё Ґ¤ЁЁж ¤«Ёл n, ў Є®в®а®© а®ў® k
Ґ¤ЁЁж. („агЈ®© бЇ®б®Ў ЇаҐ¤бв ў«ҐЁп а §ЎҐаҐ¬ Ї®§¦Ґ.) ’ ЄЁҐ Ї®б-
«Ґ¤®ў ⥫м®бвЁ гЇ®а冷稬 «ҐЄбЁЄ®Ја дЁзҐбЄЁ (б¬. ўлиҐ). ЋзҐўЁ¤-
л© бЇ®б®Ў аҐиҐЁп § ¤ зЁ - ЇҐаҐЎЁа вм ўбҐ Ї®б«Ґ¤®ў ⥫м®бвЁ
Є Є а миҐ, § ⥬ ®вЎЁа вм б।Ё Ёе вҐ, г Є®в®але k Ґ¤ЁЁж -
¬л ®вЎа®бЁ¬, бзЁв п ҐЈ® ҐнЄ®®¬Ёзл¬ (зЁб«® Ї®б«Ґ¤®ў ⥫м®б⥩
б k Ґ¤ЁЁж ¬Ё ¬®¦Ґв Ўлвм ¬®Ј® ¬ҐмиҐ зЁб« ўбҐе Ї®б«Ґ¤®ў -
⥫м®б⥩). Ѓг¤Ґ¬ ЁбЄ вм в Є®© «Ј®аЁв¬, зв®Ўл Ї®«г票Ґ ®зҐ-
।®© Ї®б«Ґ¤®ў ⥫м®бвЁ вॡ®ў «® Ї®ап¤Є n ¤Ґ©бвўЁ©.
‚ Є Є®¬ б«гз Ґ s-л© з«Ґ Ї®б«Ґ¤®ў ⥫м®бвЁ ¬®¦® 㢥«Ё-
зЁвм, Ґ ¬Ґпп ЇаҐ¤л¤гйЁҐ? …б«Ё x[s] ¬ҐпҐвбп б 0 1, в® ¤«п
б®еа ҐЁп ®ЎйҐЈ® зЁб« Ґ¤ЁЁж 㦮 бЇа ў ®в е[s] § ¬ҐЁвм 1
0. ’ ЄЁ¬ ®Ўа §®¬, е[s] - ЇҐаўл© бЇа ў г«м, § Є®в®ал¬ бв®пв
Ґ¤ЁЁжл. ‹ҐЈЄ® ўЁ¤Ґвм, зв® е[s+1] = 1 (Ё зҐ е[s] Ґ ЇҐаўл©).
’ ЄЁ¬ ®Ўа §®¬ ¤® ЁбЄ вм ЁЎ®«м襥 s, ¤«п Є®в®а®Ј® е[s]=0,
x[s+1]=1;
______________________
x |________|0|1...1|0...0|
s
‡ е[s+1] ¬®Јгв Ё¤вЁ ҐйҐ ҐбЄ®«мЄ® Ґ¤ЁЁж, Ї®б«Ґ Ёе ҐбЄ®«мЄ®
г«Ґ©. ‡ ¬ҐЁў е[s] 1, ¤® ўлЎа вм Ё¤гйЁҐ § Ё¬ з«Ґл в Є,
зв®Ўл Ї®б«Ґ¤®ў ⥫м®бвм Ўл« Ўл ¬ЁЁ¬ «м б в®зЄЁ §аҐЁп иҐ-
Ј® Ї®ап¤Є , в. Ґ. зв®Ўл б з « и«Ё г«Ё, Ї®в®¬ Ґ¤ЁЁжл. ‚®в
зв® Ї®«гз Ґвбп:
ЇҐаў п Ї®б«Ґ¤®ў ⥫м®бвм 0...01...1 (n-k г«Ґ©, k Ґ¤ЁЁж)
Ї®б«Ґ¤пп Ї®б«Ґ¤®ў ⥫м®бвм 1...10...0 (k Ґ¤ЁЁж, n-k г«Ґ©)
«Ј®аЁв¬ ЇҐаҐе®¤ Є б«Ґ¤го饩 § е[1]...x[n] Ї®б«Ґ¤®ў ⥫м®б-
вЁ (ЇаҐ¤Ї®« Ј Ґ¬, зв® ® Ґбвм):
s := n - 1;
while not ((x[s]=0) and (x[s+1]=1)) do begin
| s := s - 1;
end;
{s - з«Ґ, Ї®¤«Ґ¦ йЁ© Ё§¬ҐҐЁо б 0 1}
num:=0;
for k := s to n do begin
| num := num + x[k];
end;
{num - зЁб«® Ґ¤ЁЁж гз бвЄҐ x[s]...x[n], зЁб«® г«Ґ©
а ў® (¤«Ё - зЁб«® Ґ¤ЁЁж), в. Ґ. (n-s+1) - num}
x[s]:=1;
for k := s+1 to n-num+1 do begin
| x[k] := 0;
end;
for k := n-num+2 to n do begin
| x[k]:=1;
end;
„агЈ®© бЇ®б®Ў ЇаҐ¤бв ў«ҐЁп Ї®¤¬®¦Ґбвў - нв® ЇҐаҐзЁб«ҐЁҐ
Ёе н«Ґ¬Ґв®ў. —в®Ўл Є ¦¤®Ґ Ї®¤¬®¦Ґбвў® Ё¬Ґ«® а®ў® ®¤®
ЇаҐ¤бв ў«ҐЁҐ, ¤®Ј®ў®аЁ¬бп ЇҐаҐзЁб«пвм н«Ґ¬Ґвл ў ў®§а бв о饬
Ї®ап¤ЄҐ. ЏаЁе®¤Ё¬ Є в Є®© § ¤ зҐ.
2.3.2. ЏҐаҐзЁб«Ёвм ўбҐ ў®§а бв ойЁҐ Ї®б«Ґ¤®ў ⥫м®бвЁ ¤«Ё-
л k Ё§ зЁбҐ« 1..n ў «ҐЄбЁЄ®Ја дЁзҐбЄ®¬ Ї®ап¤ЄҐ. (ЏаЁ¬Ґа: ЇаЁ
n=5, k=2 Ї®«гз Ґ¬ 12 13 14 15 23 24 25 34 35 45.)
ђҐиҐЁҐ. ЊЁЁ¬ «м®© Ўг¤Ґв Ї®б«Ґ¤®ў ⥫м®бвм 1, 2, ..., k;
¬ ЄбЁ¬ «м®© - (n-k+1),..., (n-1), n. ‚ Є Є®¬ б«гз Ґ s-л© з«Ґ
Ї®б«Ґ¤®ў ⥫м®бвЁ ¬®¦® 㢥«ЁзЁвм? ЋвўҐв: Ґб«Ё ® ¬ҐмиҐ n-k+s.
Џ®б«Ґ 㢥«ЁзҐЁп s-Ј® н«Ґ¬Ґв ўбҐ б«Ґ¤гойЁҐ ¤®«¦л ў®§а бв вм б
и Ј®¬ 1. Џ®«гз Ґ¬ в Є®© «Ј®аЁв¬ ЇҐаҐе®¤ Є б«Ґ¤го饬г:
s:=n;
while not (x[s] < n-k+s) do begin
| s:=s-1;
end;
{s - н«Ґ¬Ґв, Ї®¤«Ґ¦ йЁ© 㢥«ЁзҐЁо};
x[s] := x[s]+1;
for i := s+1 to n do begin
| x[i] := x[i-1]+1;
end;
2.3.3. Џгбвм ¬л аҐиЁ«Ё ЇаҐ¤бв ў«пвм k-н«Ґ¬ҐвлҐ Ї®¤¬®-
¦Ґбвў ¬®¦Ґбвў {1..n} гЎлў ойЁ¬Ё Ї®б«Ґ¤®ў ⥫м®бвп¬Ё ¤«Ёл k,
гЇ®а冷зҐл¬Ё Ї®-ЇаҐ¦Ґ¬г «ҐЄбЁЄ®Ја дЁзҐбЄЁ. (ЏаЁ¬Ґа : 21 31 32
41 42 43 51 52 53 54.) Љ Є ўлЈ«п¤Ёв в®Ј¤ «Ј®аЁв¬ ЇҐаҐе®¤ Є
б«Ґ¤го饩?
ЋвўҐв. €йҐ¬ ЁЎ®«м襥 s, ¤«п Є®в®а®Ј® е[s]-x[s+1]>1. (…б«Ё
в Є®Ј® s Ґв, Ї®« Ј Ґ¬ s = 0.) “ўҐ«ЁзЁў x [s+1] 1, Є« ¤Ґ¬ ®б-
в «млҐ ¬ЁЁ¬ «м® ў®§¬®¦л¬Ё (x[t] = k+1-t ¤«п t>s).
2.3.4. ђҐиЁвм ¤ўҐ ЇаҐ¤л¤гйЁҐ § ¤ зЁ, § ¬ҐЁў «ҐЄбЁЄ®Ја дЁ-
зҐбЄЁ© Ї®а冷Є ®Ўа вл© (а миҐ Ё¤гв вҐ, Є®в®алҐ Ў®«миҐ ў
«ҐЄбЁЄ®Ја дЁзҐбЄ®¬ Ї®ап¤ЄҐ).
2.3.5. ЏҐаҐзЁб«Ёвм ўбҐ ў«®¦ҐЁп (дгЄжЁЁ, ЇҐаҐў®¤пйЁҐ а §-
лҐ н«Ґ¬Ґвл ў а §лҐ) ¬®¦Ґбвў {1..k} ў {1..n} (ЇаҐ¤Ї®« Ј Ґв-
бп, зв® k <= n). Џ®а®¦¤ҐЁҐ ®зҐаҐ¤®Ј® н«Ґ¬Ґв ¤®«¦® вॡ®ў вм
Ї®ап¤Є k ¤Ґ©бвўЁ©.
“Є § ЁҐ. ќв § ¤ з ¬®¦Ґв Ўлвм ᢥ¤Ґ Є ЇҐаҐзЁб«ҐЁо
Ї®¤¬®¦Ґбвў Ё ЇҐаҐбв ®ў®Є н«Ґ¬Ґв®ў Є ¦¤®Ј® Ї®¤¬®¦Ґбвў .
2.4. ђ §ЎЁҐЁп.
2.4.1. ЏҐаҐзЁб«Ёвм ўбҐ а §ЎЁҐЁп 楫®Ј® Ї®«®¦ЁвҐ«м®Ј® зЁб-
« n жҐ«лҐ Ї®«®¦ЁвҐ«млҐ б« Ј Ґ¬лҐ (а §ЎЁҐЁп, ®в«Ёз ойЁҐбп
«Ёим Ї®ап¤Є®¬ б« Ј Ґ¬ле, бзЁв овбп § ®¤®). (ЏаЁ¬Ґа: n=4, а §-
ЎЁҐЁп 1+1+1+1, 2+1+1, 2+2, 3+1, 4.)
ђҐиҐЁҐ. „®Ј®ў®аЁ¬бп, зв® (1) ў а §ЎЁҐЁпе б« Ј Ґ¬лҐ Ё¤гв ў
Ґў®§а бв о饬 Ї®ап¤ЄҐ, (2) б ¬Ё а §ЎЁҐЁп ¬л ЇҐаҐзЁб«пҐ¬ ў «ҐЄ-
бЁЄ®Ја дЁзҐбЄ®¬ Ї®ап¤ЄҐ. ђ §ЎЁҐЁҐ еа Ё¬ ў з «Ґ ¬ ббЁў
x[1]...x[n], ЇаЁ н⮬ Є®«ЁзҐбвў® ўе®¤пйЁе ў ҐЈ® зЁбҐ« ®Ў®§ зЁ¬
k. ‚ з «Ґ x[1]=...=x[n]=1, k=n, ў Є®жҐ x[1]=n, k=1.
‚ Є Є®¬ б«гз Ґ x[s] ¬®¦® 㢥«ЁзЁвм Ґ ¬Ґпп ЇаҐ¤л¤гйЁе?
‚®-ЇҐаўле, ¤®«¦® Ўлвм x[s-1] > x[s] Ё«Ё s = 1. ‚®-ўв®але, s
¤®«¦® Ўлвм Ґ Ї®б«Ґ¤Ё¬ н«Ґ¬Ґв®¬ (㢥«ЁзҐЁҐ s ¤® Є®¬ЇҐбЁ-
а®ў вм 㬥м襨Ґ¬ б«Ґ¤гойЁе). “ўҐ«ЁзЁў s, ўбҐ б«Ґ¤гойЁҐ н«Ґ¬Ґ-
вл ¤® ў§пвм ¬ЁЁ¬ «м® ў®§¬®¦л¬Ё.
s := k - 1;
while not ((s=1) or (x[s-1] > x[s])) do begin
| s := s-1;
end;
{s - Ї®¤«Ґ¦ 饥 㢥«ЁзҐЁо б« Ј Ґ¬®Ґ}
x [s] := x[s] + 1;
sum := 0;
for i := s+1 to k do begin
| sum := sum + x[i];
end;
{sum - б㬬 з«Ґ®ў, бв®пўиЁе Ї®б«Ґ x[s]}
for i := 1 to sum-1 do begin
| x [s+i] := 1;
end;
k := s+sum-1;
2.4.2. ЏаҐ¤бв ў«пп Ї®-ЇаҐ¦Ґ¬г а §ЎЁҐЁп Є Є Ґў®§а бв ойЁҐ
Ї®б«Ґ¤®ў ⥫м®бвЁ, ЇҐаҐзЁб«Ёвм Ёе ў Ї®ап¤ЄҐ, ®Ўа ⮬ «ҐЄбЁЄ®Ј-
а дЁзҐбЄ®¬г (¤«п n=4, ЇаЁ¬Ґа, ¤®«¦® Ї®«гзЁвмбп 4, 3+1, 2+2,
2+1+1, 1+1+1+1).
“Є § ЁҐ. “¬Ґми вм ¬®¦® ЇҐаўл© бЇа ў з«Ґ, Ґ а ўл© 1;
©¤п ҐЈ®, 㬥миЁ¬ 1, б«Ґ¤гойЁҐ ў®§м¬Ґ¬ ¬ ЄбЁ¬ «м® ў®§-
¬®¦л¬Ё (а ўл¬Ё Ґ¬г, Ї®Є еў в Ґв б㬬л, Ї®б«Ґ¤Ё© - бЄ®«мЄ®
®бв Ґвбп).
2.4.3. ЏаҐ¤бв ў«пп а §ЎЁҐЁп Є Є ҐгЎлў ойЁҐ Ї®б«Ґ¤®ў -
⥫м®бвЁ, ЇҐаҐзЁб«Ёвм Ёе ў «ҐЄбЁЄ®Ја дЁзҐбЄ®¬ Ї®ап¤ЄҐ. ЏаЁ¬Ґа
¤«п n=4: 1+1+1+1, 1+1+2, 1+3, 2+2, 4;
“Є § ЁҐ. Џ®б«Ґ¤Ё© з«Ґ 㢥«ЁзЁвм Ґ«м§п, ЇаҐ¤Ї®б«Ґ¤Ё©
- ¬®¦®; Ґб«Ё Ї®б«Ґ 㢥«ЁзҐЁп 1 ЇаҐ¤Ї®б«Ґ¤ҐЈ® з«Ґ § бзҐв
Ї®б«Ґ¤ҐЈ® агиЁвбп ў®§а бв ЁҐ, в® Ё§ ¤ўге з«Ґ®ў ¤® ᤥ« вм
®¤Ё, Ґб«Ё Ґв, в® Ї®б«Ґ¤Ё© з«Ґ ¤® а §ЎЁвм б« Ј Ґ¬лҐ,
а ўлҐ ЇаҐ¤л¤г饬г, Ё ®бв в®Є, Ґ ¬ҐмиЁ© ҐЈ®.
2.4.4. ЏаҐ¤бв ў«пп а §ЎЁҐЁп Є Є ҐгЎлў ойЁҐ Ї®б«Ґ¤®ў -
⥫м®бвЁ, ЇҐаҐзЁб«Ёвм Ёе ў Ї®ап¤ЄҐ, ®Ўа ⮬ «ҐЄбЁЄ®Ја дЁзҐбЄ®-
¬г. ЏаЁ¬Ґа ¤«п n=4: 4, 2+2, 1+3, 1+1+2, 1+1+1+1.
“Є § ЁҐ. —в®Ўл н«Ґ¬Ґв x[s] ¬®¦® Ўл«® 㬥миЁвм, Ґ®Ўе®-
¤Ё¬®, зв®Ўл s = 1 Ё«Ё x[s-1] < x[s]. …б«Ё x[s] Ґ Ї®б«Ґ¤Ё©, в®
нв®Ј® Ё ¤®бв в®з®. …б«Ё ® Ї®б«Ґ¤Ё©, ⮠㦮, зв®Ўл x[s-1] <=
(楫 п з бвм (x[s]/2)) Ё«Ё s=1.
2.5. Љ®¤л ѓаҐп Ё «®ЈЁзлҐ § ¤ зЁ.
€®Ј¤ Ўлў Ґв Ї®«Ґ§® ЇҐаҐзЁб«пвм ®ЎкҐЄвл ў в Є®¬ Ї®ап¤ЄҐ,
зв®Ўл Є ¦¤л© Ї®б«Ґ¤гойЁ© ¬ЁЁ¬ «м® ®в«Ёз «бп ®в ЇаҐ¤л¤г饣®.
ђ бᬮваЁ¬ ҐбЄ®«мЄ® § ¤ з в Є®Ј® த .
2.5.1. ЏҐаҐзЁб«Ёвм ўбҐ Ї®б«Ґ¤®ў ⥫м®бвЁ ¤«Ёл n Ё§ зЁбҐ«
1..k ў в Є®¬ Ї®ап¤ЄҐ, зв®Ўл Є ¦¤ п б«Ґ¤гой п ®в«Ёз « бм ®в ЇаҐ-
¤л¤г饩 ў Ґ¤Ёб⢥®© жЁдаҐ, ЇаЁзҐ¬ Ґ Ў®«ҐҐ, 祬 1.
ђҐиҐЁҐ. ђ бᬮваЁ¬ Їаאַ㣮«мго ¤®бЄг иЁаЁл n Ё ўлб®вл
k. Ќ Є ¦¤®© ўҐавЁЄ «Ё Ўг¤Ґв бв®пвм и иЄ . ’ ЄЁ¬ ®Ўа §®¬, Ї®«®-
¦ҐЁп и 襪 ᮮ⢥вбвўгов Ї®б«Ґ¤®ў ⥫м®бвп¬ Ё§ зЁбҐ« 1..k ¤«Ё-
л n (s-л© з«Ґ Ї®б«Ґ¤®ў ⥫м®б⨠ᮮ⢥вбвўгҐв ўлб®вҐ и иЄЁ
s-®© Ј®аЁ§®в «Ё). Ќ Є ¦¤®© и иЄҐ аЁб㥬 бв५®зЄг, Є®в®а п
¬®¦Ґв Ўлвм Їа ў«Ґ ўўҐае Ё«Ё ўЁ§. ‚ з «Ґ ўбҐ и иЄЁ Ї®бв ўЁ¬
Ё¦оо Ј®аЁ§®в «м бв५®зЄ®© ўўҐае. „ «ҐҐ ¤ўЁЈ Ґ¬ и иЄЁ Ї®
в Є®¬г Їа ўЁ«г: ©¤п б ¬го Їа ўго и иЄг, Є®в®аго ¬®¦® Ї®¤ўЁ-
гвм ў Їа ў«ҐЁЁ ( аЁб®ў ®© Ґ©) бв५ЄЁ, ¤ўЁЈ Ґ¬ ҐҐ
®¤г Є«ҐвЄг ў н⮬ Їа ў«ҐЁЁ, ўбҐ бв®пйЁҐ Їа ўҐҐ ҐҐ и иЄЁ
(®Ё гЇҐа«Ёбм ў Єа ©) а §ў®а зЁў Ґ¬ ЄагЈ®¬.
џб®, зв® Є ¦¤®¬ и ЈҐ в®«мЄ® ®¤ и иЄ б¤ўЁЈ Ґвбп, в.Ґ.
®¤Ё з«Ґ Ї®б«Ґ¤®ў ⥫м®бвЁ ¬ҐпҐвбп 1. „®Є ¦Ґ¬ Ё¤гЄжЁҐ© Ї®
n, зв® Їа®е®¤пвбп ўбҐ Ї®б«Ґ¤®ў ⥫м®бвЁ Ё§ зЁбҐ« 1...k. ‘«гз ©
n = 1 ®зҐўЁ¤Ґ. Џгбвм n > 1. ‚бҐ е®¤л Ї®¤Ґ«Ё¬ вҐ, Ј¤Ґ ¤ўЁЈ -
Ґвбп Ї®б«Ґ¤пп и иЄ , Ё вҐ, Ј¤Ґ ¤ўЁЈ Ґвбп Ґ Ї®б«Ґ¤пп. ‚® ўв®-
஬ б«гз Ґ Ї®б«Ґ¤пп и иЄ бв®Ёв г бвҐл, Ё ¬л ҐҐ Ї®ў®а зЁў Ґ¬,
в Є зв® § Є ¦¤л¬ 室®¬ ўв®а®Ј® вЁЇ б«Ґ¤гҐв k-1 室®ў ЇҐаў®Ј®
вЁЇ , § ўаҐ¬п Є®в®але Ї®б«Ґ¤пп и иЄ Ї®Ўлў Ґв ў® ўбҐе Є«ҐвЄ е.
…б«Ё ¬л ⥯Ґам § Ўг¤Ґ¬ ® Ї®б«Ґ¤Ґ© и иЄҐ, в® ¤ўЁ¦ҐЁп ЇҐаўле n-1
Ї® ЇаҐ¤Ї®«®¦ҐЁо Ё¤гЄжЁЁ Їа®ЎҐЈ о⠢ᥠЇ®б«Ґ¤®ў ⥫м®бвЁ ¤«Ёл
n-1 Ї® ®¤®¬г а §г; ¤ўЁ¦ҐЁп ¦Ґ Ї®б«Ґ¤Ґ© и иЄЁ Ё§ Є ¦¤®© Ї®б«Ґ-
¤®ў ⥫м®бвЁ ¤«Ёл n-1 ¤Ґ« ов k Ї®б«Ґ¤®ў ⥫м®б⥩ ¤«Ёл n.
‚ Їа®Ја ¬¬Ґ, Ї®¬Ё¬® Ї®б«Ґ¤®ў ⥫м®бвЁ x[1]...x[n], Ўг¤Ґ¬
еа Ёвм ¬ ббЁў d[1]...d[n] Ё§ зЁбҐ« +1 Ё -1 (+1 ᮮ⢥вбвўгҐв
бв५ЄҐ ўўҐае, -1 -бв५ЄҐ ўЁ§).
Ќ з «м®Ґ б®бв®пЁҐ: x[1] =...= x[n] = 1; d[1] =...= d[n] = 1.
ЏаЁўҐ¤Ґ¬ «Ј®аЁв¬ ЇҐаҐе®¤ Є б«Ґ¤го饩 Ї®б«Ґ¤®ў ⥫м®бвЁ (®¤-
®ўаҐ¬Ґ® ўлпбпҐвбп, ў®§¬®¦Ґ «Ё ® - ®вўҐв бв ®ўЁвбп § зҐ-
ЁҐ¬ Ўг«ҐўбЄ®© ЇҐаҐ¬Ґ®© p).
{Ґб«Ё ¬®¦®, ᤥ« вм и Ј Ё Ї®«®¦Ёвм p := true, Ґб«Ё Ґв,
Ї®«®¦Ёвм p := false }
i := n;
while (i > 1) and
| (((d[i]=1) and (x[i]=n)) or ((d[i]=-1) and (x[i]=1)))
| do begin
| i:=i-1;
end;
if (d[i]=1 and x[i]=n) or (d[i]=-1 and x[i]=1)
| then begin {i=1}
| p:=false;
end else begin
| p:=true;
| x[i] := x[i] + d[i];
| for j := i+1 to n do begin
| | d[j] := - d[j];
| end;
end;
‡ ¬Ґз ЁҐ. „«п Ї®б«Ґ¤®ў ⥫м®б⥩ г«Ґ© Ё Ґ¤ЁЁж ў®§¬®¦®
¤агЈ®Ґ аҐиҐЁҐ, ЁбЇ®«м§го饥 ¤ў®Ёзго бЁб⥬г. (€¬Ґ® ®® бўп-
§лў Ґвбп ®Ўлз® б §ў ЁҐ¬ "Є®¤л ѓаҐп".)
‡ ЇЁиҐ¬ Ї®¤ап¤ ўбҐ зЁб« ®в 0 ¤® (2 ў б⥯ҐЁ n) - 1 ў ¤ў®-
Ёз®© бЁб⥬Ґ. Ќ ЇаЁ¬Ґа, ¤«п n = 3 ЇЁиҐ¬:
000 001 010 011 100 101 110 111
‡ ⥬ Є ¦¤®Ґ Ё§ зЁбҐ« Ї®¤ўҐаЈҐ¬ ЇаҐ®Ўа §®ў Ёо, § ¬ҐЁў Є ¦¤го
жЁдаг, Єа®¬Ґ ЇҐаў®©, ҐҐ б㬬г б ЇаҐ¤л¤г饩 жЁда®© (Ї® ¬®¤г«о
2). €л¬Ё б«®ў ¬Ё, зЁб«®
a[1], a[2],...,a[n] ЇаҐ®Ўа §гҐ¬ ў
a[1], a[1] + a[2], a[2] + a[3],...,a[n-1] + a[n]
(б㬬 Ї® ¬®¤г«о 2). „«п n=3 Ї®«гзЁ¬:
000 001 011 010 110 111 101 100.
‹ҐЈЄ® Їа®ўҐаЁвм, зв® ®ЇЁб ®Ґ ЇаҐ®Ўа §®ў ЁҐ зЁбҐ« ®Ўа вЁ-
¬® (Ё ⥬ б ¬л¬ ¤ Ґв ўбҐ Ї®б«Ґ¤®ў ⥫м®бвЁ Ї® ®¤®¬г а §г).
Ља®¬Ґ в®Ј®, ¤ў®ЁзлҐ § ЇЁбЁ б®бҐ¤Ёе зЁбҐ« ®в«Ёз овбп § ¬Ґ®©
Є®ж 011...1 Є®Ґж 100...0, зв® - Ї®б«Ґ ЇаҐ®Ўа §®ў Ёп -
ЇаЁў®¤Ёв Є Ё§¬ҐҐЁо Ґ¤Ёб⢥®© жЁдал.
ЏаЁ¬ҐҐЁҐ Є®¤ ѓаҐп. Џгбвм Ґбвм ўа й ой пбп ®бм, Ё ¬л е®-
вЁ¬ Ї®бв ўЁвм ¤ взЁЄ гЈ« Ї®ў®а®в нв®© ®бЁ. Ќ б ¤Ё¬ ®бм Ў -
а Ў , ўлЄа бЁ¬ Ї®«®ўЁг Ў а Ў ў зҐал© жўҐв, Ї®«®ўЁг ў ЎҐ-
«л© Ё гбв ®ўЁ¬ д®в®н«Ґ¬Ґв. Ќ ҐЈ® ўл室Ґ Ўг¤Ґв ў Ї®«®ўЁҐ б«г-
з Ґў 0, ў Ї®«®ўЁҐ 1 (в. Ґ. ¬л Ё§¬Ґа塞 гЈ®« "б в®з®бвмо ¤®
180").
ђ §ўҐавЄ Ў а Ў :
0 1
-> |_|_|_|_|*|*|*|*| <- (бЄ«ҐЁвм Ў®Є ).
‘¤Ґ« ў а冷¬ ¤агЈго ¤®а®¦Єг Ё§ ¤ўге зҐале Ё ЎҐ«ле з б⥩ Ё
Ї®бв ўЁў ўв®а®© д®в®н«Ґ¬Ґв, Ї®«гз Ґ¬ ў®§¬®¦®бвм Ё§¬ҐаЁвм гЈ®«
б в®з®бвмо ¤® 90 Ја ¤гб®ў:
0 0 1 1
0 1 0 1
_ _ _ _
|_|_|_|_|*|*|*|*|
|_|_|*|*|_|_|*|*|
‘¤Ґ« ў ваҐвмо,
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
_ _ _ _
|_|_|_|_|*|*|*|*|
|_|_|*|*|_|_|*|*|
|_|*|_|*|_|*|_|*|
¬л Ё§¬ҐаЁ¬ гЈ®« б в®з®бвмо ¤® 45 Ја ¤гб®ў Ё в.¤. ќв Ё¤Ґп Ё¬Ґ-
Ґв, ®¤ Є®, Ґ¤®бв в®Є: ў ¬®¬Ґв ЇҐаҐбҐзҐЁп Ја Ёж ба §г Ґб-
Є®«мЄ® д®в®н«Ґ¬Ґв®ў ¬Ґпов бЁЈ «, Ё Ґб«Ё нвЁ Ё§¬ҐҐЁп Їа®-
Ё§®©¤гв Ґ ®¤®ўаҐ¬Ґ®, Є Є®Ґ-в® ўаҐ¬п Ї®Є § Ёп д®в®н«Ґ¬Ґ-
в®ў Ўг¤гв ЎҐбб¬лб«Ґл¬Ё. Љ®¤л ѓаҐп Ї®§ў®«пов Ё§ЎҐ¦ вм нв®©
®Ї б®бвЁ. ‘¤Ґ« Ґ¬ в Є, зв®Ўл Є ¦¤®¬ и ЈҐ ¬Ґп«®бм Ї®Є § ЁҐ
«Ёим ®¤®Ј® д®в®н«Ґ¬Ґв (ў ⮬ зЁб«Ґ Ё Ї®б«Ґ¤Ґ¬, Ї®б«Ґ жҐ-
«®Ј® ®Ў®а®в ).
0 0 0 0 1 1 1 1
0 0 1 1 1 1 0 0
0 1 1 0 0 1 1 0
_ _ _ _
|_|_|_|_|*|*|*|*|
|_|_|*|*|*|*|_|_|
|_|*|*|_|_|*|*|_|
Ќ ЇЁб п ¬Ё д®а¬г« Ї®§ў®«пҐв «ҐЈЄ® ЇаҐ®Ўа §®ў вм ¤ -
лҐ ®в д®в®н«Ґ¬Ґв®ў ў ¤ў®Ёзл© Є®¤ гЈ« Ї®ў®а®в .
2.5.2. Ќ ЇҐз в вм ўбҐ ЇҐаҐбв ®ўЄЁ зЁбҐ« 1..n в Є, зв®Ўл
Є ¦¤ п б«Ґ¤гой п Ї®«гз « бм Ё§ ЇаҐ¤л¤г饩 ЇҐаҐбв ®ўЄ®©
(ва бЇ®§ЁжЁҐ©) ¤ўге б®бҐ¤Ёе зЁбҐ«. Ќ ЇаЁ¬Ґа, ЇаЁ n = 3 ¤®Їгб-
вЁ¬ в Є®© Ї®а冷Є: 3.2 1 -> 2 3.1 -> 2.1 3 -> 1 2.3 -> 1.3 2 ->
3 1 2 (¬Ґ¦¤г ЇҐаҐбв ў«пҐ¬л¬Ё зЁб« ¬Ё ўбв ў«Ґл в®зЄЁ).
ђҐиҐЁҐ. Ќ ап¤г б ¬®¦Ґбвў®¬ ЇҐаҐбв ®ў®Є а бᬮваЁ¬ ¬®-
¦Ґбвў® Ї®б«Ґ¤®ў ⥫м®б⥩ y[1]..y[n] 楫ле Ґ®ваЁж ⥫мле зЁ-
ᥫ, г Є®в®але y[1] <= 0,..., y[n] <= n-1. ‚ Ґ¬ бв®«мЄ® ¦Ґ н«Ґ-
¬Ґв®ў, бЄ®«мЄ® ў ¬®¦Ґб⢥ ўбҐе ЇҐаҐбв ®ў®Є, Ё ¬л ᥩз б гбв -
®ўЁ¬ ¬Ґ¦¤г Ё¬Ё ў§ Ё¬® ®¤®§ 箥 ᮮ⢥вбвўЁҐ. €¬Ґ®, Є ¦-
¤®© ЇҐаҐбв ®ўЄҐ Ї®бв ўЁ¬ ў ᮮ⢥вбвўЁҐ Ї®б«Ґ¤®ў ⥫м®бвм
y[1]..y[n], Ј¤Ґ y[i] - Є®«ЁзҐбвў® зЁбҐ«, ¬ҐмиЁе i Ё бв®пйЁе «Ґ-
ўҐҐ i ў нв®© ЇҐаҐбв ®ўЄҐ. ‚§ Ё¬ п ®¤®§ з®бвм ўл⥪ Ґв Ё§
в Є®Ј® § ¬Ґз Ёп. ЏҐаҐбв ®ўЄ зЁбҐ« 1...n Ї®«гз Ґвбп Ё§ ЇҐаҐб-
в ®ўЄЁ зЁбҐ« 1..n-1 ¤®Ў ў«ҐЁҐ¬ зЁб« n, Є®в®а®Ґ ¬®¦® ўбв ўЁвм
«оЎ®Ґ Ё§ n ¬Ґбв. ЏаЁ н⮬ Є б®Ї®бв ў«пҐ¬®© б Ґ© Ї®б«Ґ¤®ў -
⥫м®бвЁ ¤®Ў ў«пҐвбп ҐйҐ ®¤Ё з«Ґ, ЇаЁЁ¬ ойЁ© § зҐЁп ®в 0
¤® n-1, ЇаҐ¤л¤гйЁҐ з«Ґл Ґ ¬Ґповбп. ЏаЁ н⮬ ®Є §лў Ґвбп,
зв® Ё§¬ҐҐЁҐ Ґ¤ЁЁжг ®¤®Ј® Ё§ з«Ґ®ў Ї®б«Ґ¤®ў ⥫м®бвЁ y
ᮮ⢥вбвўгҐв ЇҐаҐбв ®ўЄҐ ¤ўге б®бҐ¤Ёе зЁбҐ«, Ґб«Ё ўбҐ б«Ґ¤г-
ойЁҐ зЁб« Ї®б«Ґ¤®ў ⥫м®бвЁ y ЇаЁЁ¬ ов ¬ ЄбЁ¬ «м® Ё«Ё ¬ЁЁ-
¬ «м® ў®§¬®¦лҐ ¤«п Ёе § 票п. €¬Ґ®, 㢥«ЁзҐЁҐ y[i] 1
ᮮ⢥вбвўгҐв ЇҐаҐбв ®ўЄҐ зЁб« i б ҐЈ® Їа ўл¬ б®бҐ¤®¬,
㬥м襨Ґ - б «Ґўл¬.
’ҐЇҐам ўбЇ®¬Ё¬ аҐиҐЁҐ § ¤ зЁ ® ЇҐаҐзЁб«ҐЁЁ ўбҐе Ї®б«Ґ¤®-
ў ⥫м®б⥩, Є ¦¤®¬ и ЈҐ Є®в®а®Ј® ®¤Ё з«Ґ ¬ҐпҐвбп Ґ¤Ё-
Ёжг. ‡ ¬ҐЁў Їаאַ㣮«мго ¤®бЄг ¤®бЄ®© ў д®а¬Ґ «ҐбвЁжл (ўлб®-
в i-®© ўҐавЁЄ «Ё а ў i) Ё ¤ўЁЈ п и иЄЁ Ї® ⥬ ¦Ґ Їа ўЁ« ¬, ¬л
ЇҐаҐзЁб«Ё¬ ўбҐ Ї®б«Ґ¤®ў ⥫м®бвЁ y, ЇаЁзҐ¬ i-л© з«Ґ Ўг¤Ґв ¬Ґ-
пвмбп, «Ёим Ґб«Ё ўбҐ б«Ґ¤гойЁҐ и иЄЁ бв®пв г Єа п. Ќ ¤® ҐйҐ
㬥вм Ї а ««Ґ«м® б Ё§¬ҐҐЁҐ¬ y Є®а४вЁа®ў вм ЇҐаҐбв ®ўЄг.
ЋзҐўЁ¤л© бЇ®б®Ў вॡгҐв ®влбЄ Ёп ў Ґ© зЁб« i; нв® ¬®¦® ®Ў-
«ҐЈзЁвм, Ґб«Ё Ї®¬Ё¬® б ¬®© ЇҐаҐбв ®ўЄЁ еа Ёвм дгЄжЁо i |--->
Ї®§ЁжЁп зЁб« i ў ЇҐаҐбв ®ўЄҐ (®Ўа ⮥ Є ЇҐаҐбв ®ўЄҐ ®в®Ўа -
¦ҐЁҐ), Ё ᮮ⢥вбвўгойЁ¬ ®Ўа §®¬ ҐҐ Є®а४вЁа®ў вм. ‚®в Є Є п
Ї®«гз Ґвбп Їа®Ја ¬¬ :
program test;
| const n=...;
| var
| x: array [1..n] of 1..n; {ЇҐаҐбв ®ўЄ }
| inv_x: array [1..n] of 1..n; {®Ўа в п ЇҐаҐбв ®ўЄ }
| y: array [1..n] of integer; {Y[i] < i}
| d: array [1..n] of -1..1; { Їа ў«ҐЁп}
| b: boolean;
|
| procedure print_x;
| | var i: integer;
| begin
| | for i:=1 to n do begin
| | | write (x[i], ' ');
| | end;
| | writeln;
| end;
|
| procedure set_first;{ЇҐаў п ЇҐаҐбв ®ўЄ : y[i]=0 ЇаЁ ўбҐе i}
| | var i : integer;
| begin
| | for i := 1 to n do begin
| | | x[i] := n + 1 - i;
| | | inv_x[i] := n + 1 - i;
| | | y[i]:=0;
| | | d[i]:=1;
| | end;
| end;
|
| procedure move (var done : boolean);
| | var i, j, pos1, pos2, val1, val2, tmp : integer;
| begin
| | i := n;
| | while (i > 1) and (((d[i]=1) and (y[i]=i-1)) or
| | | ((y[i]=-1) and (y[i]=0))) do begin
| | | i := i-1;
| | end;
| | done := (i>1);
| | {гЇа®йҐЁҐ бўп§ ® б ⥬, зв® ЇҐаўл© з«Ґ Ґ«м§п ¬Ґпвм}
| | if done then begin
| | | y[i] := y[i]+d[i];
| | | for j := i+1 to n do begin
| | | | d[j] := -d[j];
| | | end;
| | | pos1 := inv_x[i];
| | | val1 := i;
| | | pos2 := pos1 + d[i];
| | | val2 := x[pos2];
| | | {pos1, pos2 - ®¬Ґа ЇҐаҐбв ў«пҐ¬ле н«Ґ¬Ґв®ў;
| | | val1, val2 - Ёе § 票п}
| | | tmp := x[pos1];
| | | x[pos1] := x[pos2];
| | | x[pos2] := tmp;
| | | tmp := inv_x[val1];
| | | inv_x[val1] := inv_x[val2];
| | | inv_x[val2] := tmp;
| | end;
| end;
|
begin
| set_first;
| print_x;
| b := true;
| { ЇҐз в л ўбҐ ЇҐаҐбв ®ўЄЁ ¤® ⥪г饩 ўЄ«озЁвҐ«м®;
| Ґб«Ё b «®¦®, ⮠⥪гй п - Ї®б«Ґ¤пп}
| while b do begin
| | move (b);
| | if b then print_x;
| end;
end.
2.6. ЌҐбЄ®«мЄ® § ¬Ґз Ё©.
Џ®б¬®ваЁ¬ ҐйҐ а § ЁбЇ®«м§®ў лҐ ¬Ё ЇаЁҐ¬л. ‚ з «Ґ
г¤ ў «®бм аҐиЁвм § ¤ зг Ї® в Є®© б奬Ґ: ®ЇаҐ¤Ґ«пҐ¬ Ї®а冷Є
Ї®¤«Ґ¦ йЁе ЇҐаҐзЁб«ҐЁо ®ЎкҐЄв е Ё пў® ®ЇЁблў Ґ¬ Їа®жҐ¤гаг ЇҐ-
аҐе®¤ ®в ¤ ®Ј® ®ЎкҐЄв Є б«Ґ¤го饬г (ў б¬лб«Ґ нв®Ј® Ї®ап¤Є ).
‚ § ¤ зҐ ® Є®¤ е ѓаҐп Ї®вॡ®ў «®бм еа Ёвм, Ї®¬Ё¬® ⥪г饣®
®ЎкҐЄв , Ё ҐЄ®в®аго ¤®Ї®«ЁвҐ«мго Ёд®а¬ жЁо ( Їа ў«ҐЁп
бв५®Є). Ќ Є®Ґж, ў § ¤ зҐ ® ЇҐаҐзЁб«ҐЁЁ ЇҐаҐбв ®ў®Є ( Є ¦-
¤®¬ и ЈҐ ¤®ЇгбвЁ¬ ®¤ ва бЇ®§ЁжЁп) ¬л ЇаЁ¬ҐЁ«Ё в Є®© ЇаЁҐ¬:
гбв ®ўЁ«Ё ў§ Ё¬® ®¤®§ 箥 ᮮ⢥вбвўЁҐ ¬Ґ¦¤г ЇҐаҐзЁб«пҐ¬л¬
¬®¦Ґбвў®¬ Ё ¤агЈЁ¬, Ў®«ҐҐ Їа®бв® гбв஥л¬. ’ ЄЁе ᮮ⢥вбвўЁ©
ў Є®¬ЎЁ в®аЁЄҐ Ё§ўҐбв® ¬®Ј®. Њл ЇаЁўҐ¤Ґ¬ ҐбЄ®«мЄ® § ¤ з,
бўп§ ле б в Є §лў Ґ¬л¬Ё "зЁб« ¬Ё Љ в « ".
2.6.1. ЏҐаҐзЁб«Ёвм ўбҐ Ї®б«Ґ¤®ў ⥫м®бвЁ ¤«Ёл 2n, б®бв ў-
«ҐлҐ Ё§ n Ґ¤ЁЁж Ё n ¬Ёгб Ґ¤ЁЁж, г Є®в®але б㬬 «оЎ®Ј® -
з «м®Ј® ®в१Є Ї®«®¦ЁвҐ«м (в.Ґ. зЁб«® ¬Ёгб Ґ¤ЁЁж ў Ґ¬ Ґ
ЇаҐў®б室Ёв зЁб« Ґ¤ЁЁж).
ђҐиҐЁҐ. €§®Ўа ¦ п Ґ¤ЁЁжг ўҐЄв®а®¬ (1,1), ¬Ёгб Ґ¤ЁЁжг
ўҐЄв®а®¬ (1,-1), ¬®¦® бЄ § вм, зв® ¬л ЁйҐ¬ ЇгвЁ Ё§ в®зЄЁ (0,0)
ў в®зЄг (n,0), Ґ ®ЇгбЄ ойЁҐбп Ё¦Ґ ®бЁ ЎбжЁбб.
Ѓг¤Ґ¬ ЇҐаҐзЁб«пвм Ї®б«Ґ¤®ў ⥫м®бвЁ ў «ҐЄбЁЄ®Ја дЁзҐбЄ®¬
Ї®ап¤ЄҐ, бзЁв п, зв® -1 ЇаҐ¤иҐбвўгҐв 1. ЏҐаў®© Ї®б«Ґ¤®ў -
⥫м®бвмо Ўг¤Ґв "ЇЁ« "
1, -1, 1, -1, ...
Ї®б«Ґ¤Ґ© - "Ј®аЄ "
1, 1, 1, ..., 1, -1, -1, ..., -1.
Љ Є ЇҐаҐ©вЁ ®в Ї®б«Ґ¤®ў ⥫м®бвЁ Є б«Ґ¤го饩? „® ҐЄ®в®а®-
Ј® ¬Ґбв ®Ё ¤®«¦л б®ўЇ ¤ вм, § ⥬ ¤® § ¬ҐЁвм -1 1.
ЊҐбв® § ¬Ґл ¤®«¦® Ўлвм а бЇ®«®¦Ґ® Є Є ¬®¦® Їа ўҐҐ. Ќ® § ¬Ґ-
пвм -1 1 ¬®¦® в®«мЄ® ў ⮬ б«гз Ґ, Ґб«Ё бЇа ў ®в ҐҐ Ґбвм
Ґ¤ЁЁж (Є®в®аго ¬®¦® § ¬ҐЁвм -1). ‡ ¬ҐЁў -1 1, ¬л ЇаЁ-
室Ё¬ Є в Є®© § ¤ зҐ: дЁЄбЁа®ў з «мл© Єгб®Є Ї®б«Ґ¤®ў -
⥫м®бвЁ, ¤® ©вЁ ¬ЁЁ¬ «м®Ґ Їа®¤®«¦ҐЁҐ. …Ґ аҐиҐЁҐ: ¤®
ЇаЁЇЁблў вм -1, Ґб«Ё нв® Ґ агиЁв гб«®ўЁп Ґ®ваЁж ⥫м®бвЁ,
Ё зҐ ЇаЁЇЁблў вм 1. Џ®«гз Ґ¬ в Єго Їа®Ја ¬¬г:
...
type array2n = array [1..2n] of integer;
...
procedure get_next (var a: array2n; var last: Boolean);
| {ў a Ї®¬Ґй Ґвбп б«Ґ¤гой п Ї®б«Ґ¤®ў ⥫м®бвм, Ґб«Ё}
| {® Ґбвм (ЇаЁ н⮬ last=false), Ё зҐ last:=true}
| var k, i, sum: integer;
begin
| k:=2*n;
| {Ёў аЁ в: ў a[k+1..2n] в®«мЄ® ¬Ёгб Ґ¤ЁЁжл}
| while a[k] = -1 do begin k:=k-1; end;
| {k - ¬ ЄбЁ¬ «м®Ґ б।Ё вҐе, ¤«п Є®в®але a[k]=1}
| while (k>0) and (a[k] = 1) do begin k:=k-1; end;
| {a[k] - б ¬ п Їа ў п -1, § Є®в®а®© Ґбвм 1;
| Ґб«Ё в ЄЁе Ґв, в® k=0}
| if k = 0 then begin
| | last := true;
| end else begin
| | last := false;
| | i:=0; sum:=0;
| | {sum = a[1]+...+a[i]}
| | while i<> k do begin
| | | i:=i+1; sum:= sum+a[i];
| | end;
| | {sum = a[1]+...+a[k]}
| | a[k]:= 1; sum:= sum+2;
| | {ўЇ«®вм ¤® a[k] ўбҐ Ё§¬ҐҐ®, sum=a[1]+...+a[k]}
| | while k <> 2*n do begin
| | | k:=k+1;
| | | if sum > 0 then begin
| | | | a[k]:=-1
| | | end else begin
| | | | a[k]:=1;
| | | end;
| | | sum:= sum+a[k];
| | end;
| | {k=n, sum=a[1]+...a[2n]=0}
| end;
end;
2.6.2. ЏҐаҐзЁб«Ёвм ўбҐ а ббв ®ўЄЁ бЄ®Ў®Є ў Їа®Ё§ўҐ¤ҐЁЁ n
ᮬ®¦ЁвҐ«Ґ©. Џ®а冷Є ᮬ®¦ЁвҐ«Ґ© Ґ ¬ҐпҐвбп, бЄ®ЎЄЁ Ї®«®бвмо
®ЇаҐ¤Ґ«пов Ї®а冷Є ¤Ґ©бвўЁ©. (Ќ ЇаЁ¬Ґа, ¤«п n = 4 Ґбвм 5 а ббв -
®ў®Є ((ab)c)d, (a(bc))d, (ab)(cd), a((bc)d), a(b(cd)).)
“Є § ЁҐ. Љ ¦¤®¬г Ї®ап¤Єг ¤Ґ©бвўЁ© ᮮ⢥вбвўгҐв Ї®б«Ґ¤®ў -
⥫м®бвм Є®¬ ¤ б⥪®ў®Ј® Є «мЄг«пв®а .
2.6.3. Ќ ®Єа㦮бвЁ § ¤ ® 2n в®зҐЄ, Їа®г¬Ґа®ў ле ®в 1
¤® 2n. ЏҐаҐзЁб«Ёвм ўбҐ бЇ®б®Ўл Їа®ўҐбвЁ n ҐЇҐаҐбҐЄ ойЁебп е®а¤
б ўҐаиЁ ¬Ё ў нвЁе в®зЄ е.
2.6.4. ЏҐаҐзЁб«Ёвм ўбҐ бЇ®б®Ўл а §аҐ§ вм n-гЈ®«мЁЄ ваҐ-
гЈ®«мЁЄЁ, Їа®ўҐ¤п n - 2 ҐЈ® ¤Ё Ј® «Ё.
…йҐ ®¤Ё Є« бб § ¤ з ЇҐаҐзЁб«ҐЁҐ ўбҐе н«Ґ¬Ґв®ў § ¤ -
®Ј® ¬®¦Ґбвў ¬л а бᬮваЁ¬ Ё¦Ґ, ®Ўб㦤 п ¬Ґв®¤ Ї®ЁбЄ б
ў®§ўа в ¬Ё (backtracking).
2.7. Џ®¤бзҐв Є®«ЁзҐбвў.
€®Ј¤ ¬®¦® ©вЁ Є®«ЁзҐбвў® ®ЎкҐЄв®ў б ⥬ Ё«Ё Ёл¬
бў®©бвў®¬, Ґ ЇҐаҐзЁб«пп Ёе. Љ« ббЁзҐбЄЁ© ЇаЁ¬Ґа: C(n,k) - зЁб«®
ўбҐе k-н«Ґ¬Ґвле Ї®¤¬®¦Ґбвў n-н«Ґ¬Ґв®Ј® ¬®¦Ґбвў - ¬®¦®
©вЁ, § Ї®«пп в Ў«Ёжг § 票© дгЄжЁЁ ‘ Ї® д®а¬г« ¬:
C (n,0) = C (n,n) = 1 (n >= 1)
C (n,k) = C (n-1,k-1) + C (n-1,k) (n > 1, 0 < k < n);
Ё«Ё Ї® д®а¬г«Ґ n!/((k!)*(n-k)!). (ЏҐаўл© бЇ®б®Ў нд䥪⨢ҐҐ, Ґб-
«Ё ¤® ўлзЁб«Ёвм ¬®Ј® § 票© ‘(n,k).)
ЏаЁўҐ¤Ґ¬ ¤агЈЁҐ ЇаЁ¬Ґал.
2.7.1 (—Ёб«® а §ЎЁҐЁ©). (ЏаҐ¤« Ј « бм ўбҐб®о§®© ®«Ё¬-
ЇЁ ¤Ґ Ї® Їа®Ја ¬¬Ёа®ў Ёо 1988 Ј®¤ .) Џгбвм P(n) - зЁб«® а §ЎЁ-
ҐЁ© 楫®Ј® Ї®«®¦ЁвҐ«м®Ј® n жҐ«лҐ Ї®«®¦ЁвҐ«млҐ б« Ј Ґ¬лҐ
(ЎҐ§ гзҐв Ї®ап¤Є , 1+2 Ё 2+1 - ®¤® Ё в® ¦Ґ а §ЎЁҐЁҐ). ЏаЁ n=0
Ї®«®¦Ё¬ P(n) = 1 (Ґ¤Ёб⢥®Ґ а §ЎЁҐЁҐ Ґ ᮤҐа¦Ёв б« Ј Ґ¬ле).
Џ®бва®Ёвм «Ј®аЁв¬ ўлзЁб«ҐЁп P(n) ¤«п § ¤ ®Ј® n.
ђҐиҐЁҐ. Њ®¦® ¤®Є § вм (нв® ҐваЁўЁ «м®) в Єго д®а¬г«г
¤«п P(n):
P(n) = P(n-1)+P(n-2)-P(n-5)-P(n-7)+P(n-12)+P(n-15) +...
(§ ЄЁ г Ї а з«Ґ®ў зҐаҐ¤говбп, ўлзЁв Ґ¬лҐ ў ®¤®© Ї аҐ а ўл
(3*q*q-q)/2 Ё (3*q*q+q)/2).
Ћ¤ Є® Ё ЎҐ§ ҐҐ ЁбЇ®«м§®ў Ёп ¬®¦® ЇаЁ¤г¬ вм бЇ®б®Ў ўлзЁб-
«ҐЁп P(n), Є®в®ал© бгйҐб⢥® нд䥪⨢ҐҐ ЇҐаҐЎ®а Ё Ї®¤бзҐв
ўбҐе а §ЎЁҐЁ©.
ЋЎ®§ зЁ¬ зҐаҐ§ R(n,k) (ЇаЁ n >= 0, k >= 0) зЁб«® а §ЎЁҐЁ©
n жҐ«лҐ Ї®«®¦ЁвҐ«млҐ б« Ј Ґ¬лҐ, Ґ ЇаҐў®б室пйЁҐ k. (ЏаЁ
н⮬ R(0,k) бзЁв Ґ¬ а ўл¬ 1 ¤«п ўбҐе k >= 0.) ЋзҐўЁ¤®, P(n) =
R(n,n). ‚бҐ а §ЎЁҐЁп n б« Ј Ґ¬лҐ, Ґ ЇаҐў®б室пйЁҐ k, а -
§®ЎмҐ¬ ЈагЇЇл ў § ўЁбЁ¬®бвЁ ®в ¬ ЄбЁ¬ «м®Ј® б« Ј Ґ¬®Ј®
(®Ў®§ зЁ¬ ҐЈ® i). —Ёб«® R(n,k) а ў® б㬬Ґ (Ї® ўбҐ¬ i ®в 1 ¤®
k) Є®«ЁзҐбвў а §ЎЁҐЁ© б® б« Ј Ґ¬л¬Ё Ґ Ў®«миҐ k Ё ¬ ЄбЁ¬ «мл¬
б« Ј Ґ¬л¬, а ўл¬ i. Ђ а §ЎЁҐЁп n б« Ј Ґ¬лҐ Ґ Ў®«ҐҐ k б
ЇҐаўл¬ б« Ј Ґ¬л¬, а ўл¬ i, Ї® бгйҐбвўг ЇаҐ¤бв ў«пов б®Ў®© а §-
ЎЁҐЁп n - i б« Ј Ґ¬лҐ, Ґ ЇаҐў®б室пйЁҐ i (ЇаЁ i <= k). ’ Є
зв®
R(n,k) = б㬬 Ї® i ®в 1 ¤® k зЁбҐ« R(n-i,i) ЇаЁ k <= n;
R(n,k) = R(n,n) ЇаЁ k >= n,
зв® Ї®§ў®«пҐв § Ї®«пвм в Ў«Ёжг § 票© дгЄжЁЁ R.
2.7.2 (‘з бв«ЁўлҐ ЎЁ«Ґвл). (‡ ¤ з ЇаҐ¤« Ј « бм ‚бҐб®о§-
®© ®«Ё¬ЇЁ ¤Ґ Ї® Їа®Ја ¬¬Ёа®ў Ёо 1989 Ј®¤ ). Џ®б«Ґ¤®ў ⥫м®бвм
Ё§ 2n жЁда (Є ¦¤ п жЁда ®в 0 ¤® 9) §лў Ґвбп бз бв«Ёўл¬ ЎЁ«Ґ-
⮬, Ґб«Ё б㬬 ЇҐаўле n жЁда а ў б㬬Ґ Ї®б«Ґ¤Ёе n жЁда. Ќ ©-
вЁ зЁб«® бз бв«Ёўле Ї®б«Ґ¤®ў ⥫м®б⥩ ¤ ®© ¤«Ёл.
ђҐиҐЁҐ. (‘®®ЎйҐ® ®¤Ё¬ Ё§ гз бвЁЄ®ў ®«Ё¬ЇЁ ¤л; Є ᮦ «Ґ-
Ёо, Ґ ¬®Јг гЄ § вм д ¬Ё«Ёо, в Є Є Є а Ў®вл Їа®ўҐап«Ёбм § иЁд-
а®ў л¬Ё.) ђ бᬮваЁ¬ Ў®«ҐҐ ®Ўйго § ¤ зг: ©вЁ зЁб«® Ї®б«Ґ¤®-
ў ⥫м®б⥩, Ј¤Ґ а §Ёж ¬Ґ¦¤г б㬬®© ЇҐаўле n жЁда Ё б㬬®©
Ї®б«Ґ¤Ёе n жЁда а ў k (k = -9n,..., 9n). Џгбвм T(n, k) - зЁб-
«® в ЄЁе Ї®б«Ґ¤®ў ⥫м®б⥩.
ђ §®ЎмҐ¬ ¬®¦Ґбвў® в ЄЁе Ї®б«Ґ¤®ў ⥫м®б⥩ Є« ббл ў
§ ўЁбЁ¬®бвЁ ®в а §Ёжл ¬Ґ¦¤г ЇҐаў®© Ё Ї®б«Ґ¤Ґ© жЁда ¬Ё. …б«Ё
нв а §Ёж а ў t, в® а §Ёж ¬Ґ¦¤г б㬬 ¬Ё ЈагЇЇ Ё§ ®бв ўиЁе-
бп n-1 жЁда а ў k-t. “зЁвлў п, зв® Ї а жЁда б а §®бвмо t Ўл-
ў Ґв 10 - (¬®¤г«м t), Ї®«гз Ґ¬ д®а¬г«г
T(n,k) = б㬬 Ї® t ®в -9 ¤® 9 зЁбҐ« (10-|t|) * T(n-1, k-t).
(ЌҐЄ®в®алҐ б« Ј Ґ¬лҐ ¬®Јгв ®вбгвбвў®ў вм, в Є Є Є k-t ¬®¦Ґв Ўлвм
б«ЁиЄ®¬ ўҐ«ЁЄ®.)
ѓ« ў 3. ЋЎе®¤ ¤ҐаҐў . ЏҐаҐЎ®а б ў®§ўа в ¬Ё.
3.1. ”Ґа§Ё, Ґ ЎмойЁҐ ¤агЈ ¤агЈ : ®Ўе®¤ ¤ҐаҐў Ї®§ЁжЁ©
‚ ЇаҐ¤л¤г饩 Ј« ўҐ ¬л а бб¬ ваЁў «Ё ҐбЄ®«мЄ® § ¤ з ®¤®Ј®
Ё в®Ј® ¦Ґ вЁЇ : "ЇҐаҐзЁб«Ёвм ўбҐ н«Ґ¬Ґвл ҐЄ®в®а®Ј® ¬®¦Ґбвў
A". ‘奬 аҐиҐЁп Ўл« в Є®ў : ¬®¦Ґб⢥ A ўў®¤Ё«бп Ї®а冷Є Ё
®ЇЁблў « бм Їа®жҐ¤га ЇҐаҐе®¤ ®в Їа®Ё§ў®«м®Ј® н«Ґ¬Ґв ¬®-
¦Ґбвў A Є б«Ґ¤го饬㠧 Ё¬ (ў н⮬ Ї®ап¤ЄҐ). ’ Єго б奬㠥
ўбҐЈ¤ г¤ Ґвбп ॠ«Ё§®ў вм ҐЇ®б।б⢥®, Ё ў нв®© Ј« ўҐ ¬л
а бᬮваЁ¬ ¤агЈ®© Ї®«Ґ§л© ЇаЁҐ¬ ЇҐаҐзЁб«ҐЁп ўбҐе н«Ґ¬Ґв®ў Ґ-
Є®в®а®Ј® ¬®¦Ґбвў . …Ј® §лў ов "Ї®ЁбЄ б ў®§ўа в ¬Ё", "¬Ґв®¤
ўҐвўҐ© Ё Ја Ёж", "backtracking". Ќ и ў§Ј«п¤ ЁЎ®«ҐҐ в®з®Ґ
§ў ЁҐ нв®Ј® ¬Ґв®¤ - ®Ўе®¤ ¤ҐаҐў .
3.1.1. ЏҐаҐзЁб«Ёвм ўбҐ бЇ®б®Ўл а ббв ®ўЄЁ n дҐа§Ґ© и е-
¬ в®© ¤®бЄҐ n n, ЇаЁ Є®в®але ®Ё Ґ Ўмов ¤агЈ ¤агЈ .
ђҐиҐЁҐ. ЋзҐўЁ¤®, Є ¦¤®© Ё§ n Ј®аЁ§®в «Ґ© ¤®«¦® бв®-
пвм Ї® дҐа§о. Ѓг¤Ґ¬ §лў вм k-Ї®§ЁжЁҐ© (¤«п k = 0, 1,...,n)
Їа®Ё§ў®«мго а ббв ®ўЄг k дҐа§Ґ© k Ё¦Ёе Ј®аЁ§®в «пе (дҐа-
§Ё ¬®Јгв ЎЁвм ¤агЈ ¤агЈ ). Ќ аЁб㥬 "¤ҐаҐў® Ї®§ЁжЁ©": ҐЈ® Є®аҐ¬
Ўг¤Ґв Ґ¤Ёб⢥ п 0-Ї®§ЁжЁп, Ё§ Є ¦¤®© k-Ї®§ЁжЁЁ ўл室Ёв n
бв५®Є ўўҐае ў (k+1)-Ї®§ЁжЁЁ. ќвЁ n Ї®§ЁжЁ© ®в«Ёз овбп Ї®«®¦Ґ-
ЁҐ¬ дҐа§п (k+1)-®© Ј®аЁ§®в «Ё. Ѓг¤Ґ¬ бзЁв вм, зв® а бЇ®«®-
¦ҐЁҐ Ёе аЁбгЄҐ ᮮ⢥вбвўгҐв Ї®«®¦ҐЁо нв®Ј® дҐа§п: «ҐўҐҐ
в Ї®§ЁжЁп, ў Є®в®а®© дҐа§м а бЇ®«®¦Ґ «ҐўҐҐ.
„ҐаҐў® Ї®§ЁжЁ© ¤«п
n = 2
‘।Ё Ї®§ЁжЁ© нв®Ј® ¤ҐаҐў ¬ ¤® ®в®Ўа вм ⥠n-Ї®§ЁжЁЁ, ў Є®-
в®але дҐа§Ё Ґ Ўмов ¤агЈ ¤агЈ . Џа®Ја ¬¬ Ўг¤Ґв "®Ўе®¤Ёвм ¤ҐаҐ-
ў®" Ё ЁбЄ вм Ёе. —в®Ўл Ґ ¤Ґ« вм «ЁиҐ© а Ў®вл, § ¬ҐвЁ¬ ў®в зв®:
Ґб«Ё ў Є Є®©-в® k-Ї®§ЁжЁЁ дҐа§Ё Ўмов ¤агЈ ¤агЈ , в® бв ўЁвм
¤ «мҐ©иЁе дҐа§Ґ© б¬лб« Ґв. Џ®н⮬г, ®Ў аг¦Ёў нв®, ¬л Ўг¤Ґ¬
ЇаҐЄа й вм Ї®бв஥ЁҐ ¤ҐаҐў ў н⮬ Їа ў«ҐЁЁ.
’®зҐҐ, §®ўҐ¬ k-Ї®§ЁжЁо ¤®ЇгбвЁ¬®©, Ґб«Ё Ї®б«Ґ г¤ «ҐЁп
ўҐа奣® дҐа§п ®бв ўиЁҐбп Ґ Ўмов ¤агЈ ¤агЈ . Ќ и Їа®Ја ¬¬ Ўг-
¤Ґв а бб¬ ваЁў вм в®«мЄ® ¤®ЇгбвЁ¬лҐ Ї®§ЁжЁЁ.
„ҐаҐў® ¤®ЇгбвЁ¬ле
Ї®§ЁжЁ© ¤«п n = 3
ђ §®ЎмҐ¬ § ¤ зг ¤ўҐ з бвЁ: (1) ®Ўе®¤ Їа®Ё§ў®«м®Ј® ¤ҐаҐ-
ў Ё (2) ॠ«Ё§ жЁо ¤ҐаҐў ¤®ЇгбвЁ¬ле Ї®§ЁжЁ©.
‘д®а¬г«Ёа㥬 § ¤ зг ®Ўе®¤ Їа®Ё§ў®«м®Ј® ¤ҐаҐў . Ѓг¤Ґ¬ бзЁ-
в вм, зв® г б Ё¬ҐҐвбп ђ®Ў®в, Є®в®ал© ў Є ¦¤л© ¬®¬Ґв 室Ёвбп
ў ®¤®© Ё§ ўҐаиЁ ¤ҐаҐў (ўҐаиЁл Ё§®Ўа ¦Ґл аЁбгЄҐ Єа㦮з-
Є ¬Ё). Ћ 㬥Ґв ўлЇ®«пвм Є®¬ ¤л:
ўўҐае_ «Ґў® (Ё¤вЁ Ї® б ¬®© «Ґў®©
Ё§ ўл室пйЁе ўўҐае бв५®Є)
ўЇа ў® (ЇҐаҐ©вЁ ў б®бҐ¤оо бЇа ў
ўҐаиЁг)
ўЁ§ (бЇгбвЁвмбп ўЁ§ ®¤Ё га®-
ўҐм)
ўўҐае_ «Ґў®
ўЇа ў®
ўЁ§
Ё Їа®ўҐаЄЁ, ᮮ⢥вбвўгойЁҐ ў®§¬®¦®бвЁ ўлЇ®«Ёвм Є ¦¤го Ё§ Є®-
¬ ¤, §лў Ґ¬лҐ "Ґбвм_ᢥаег", "Ґбвм_бЇа ў ", "Ґбвм_бЁ§г"
(Ї®б«Ґ¤пп ЁбвЁ ўбо¤г, Єа®¬Ґ Є®ап). ЋЎа вЁвҐ ўЁ¬ ЁҐ, зв®
Є®¬ ¤ "ўЇа ў®" Ї®§ў®«пҐв ЇҐаҐ©вЁ «Ёим Є "த®¬г Ўа вг", ® Ґ
Є "¤ў®оத®¬г".
’ Є Є®¬ ¤ "ўЇа ў®"
Ќ… ¤Ґ©бвўгҐв!
Ѓг¤Ґ¬ бзЁв вм, зв® г ђ®Ў®в Ґбвм Є®¬ ¤ "®Ўа Ў®в вм" Ё зв®
ҐЈ® § ¤ з - ®Ўа Ў®в вм ўбҐ «Ёбвмп (ўҐаиЁл, Ё§ Є®в®але Ґв
бв५®Є ўўҐае, в® Ґбвм Ј¤Ґ гб«®ўЁҐ "Ґбвм_ᢥаег" «®¦®). „«п -
襩 и е¬ в®© § ¤ зЁ Є®¬ ¤Ґ ®Ўа Ў®в вм Ўг¤Ґв ᮮ⢥вбвў®ў вм
Їа®ўҐаЄ Ё ЇҐз вм Ї®§ЁжЁЁ дҐа§Ґ©.
„®Є § ⥫мбвў® Їа ўЁ«м®бвЁ ЇаЁў®¤Ё¬®© ¤ «ҐҐ Їа®Ја ¬¬л Ёб-
Ї®«м§гҐв в ЄЁҐ ®ЇаҐ¤Ґ«ҐЁп. Џгбвм дЁЄбЁа®ў ® Ї®«®¦ҐЁҐ ђ®Ў®в ў
®¤®© Ё§ ўҐаиЁ ¤ҐаҐў . ’®Ј¤ ўбҐ «Ёбвмп ¤ҐаҐў а §ЎЁў овбп
ваЁ Є ⥣®аЁЁ: ¤ ђ®Ў®в®¬, «ҐўҐҐ ђ®Ў®в Ё Їа ўҐҐ ђ®Ў®в . (Џгвм
Ё§ Є®ап ў «Ёбв ¬®¦Ґв Їа®е®¤Ёвм зҐаҐ§ ўҐаиЁг б ђ®Ў®в®¬, бў®а -
зЁў вм ў«Ґў®, Ґ ¤®е®¤п ¤® ҐҐ Ё бў®а зЁў вм ўЇа ў®, Ґ ¤®е®¤п
¤® ҐҐ.) —ҐаҐ§ (Ћ‹) ®Ў®§ зЁ¬ гб«®ўЁҐ "®Ўа Ў®в л ўбҐ «Ёбвмп «Ґ-
ўҐҐ ђ®Ў®в ", зҐаҐ§ (Ћ‹Ќ) - гб«®ўЁҐ "®Ўа Ў®в л ўбҐ «Ёбвмп «Ґ-
ўҐҐ Ё ¤ ђ®Ў®в®¬".
Ќ ¬ Ї® ¤®ЎЁвбп в Є п Їа®жҐ¤га :
procedure ўўҐае_¤®_гЇ®а _Ё_®Ўа Ў®в вм
| {¤ ®: (Ћ‹), ¤®: (Ћ‹Ќ)}
begin
| {Ёў аЁ в: Ћ‹}
| while Ґбвм_ᢥаег do begin
| | ўўҐае_ «Ґў®
| end
| {Ћ‹, ђ®Ў®в ў «ЁбвҐ}
| ®Ўа Ў®в вм;
| {Ћ‹Ќ}
end;
Ћб®ў®© «Ј®аЁв¬:
¤ ®: ђ®Ў®в ў Є®аҐ, «Ёбвмп Ґ ®Ўа Ў®в л
¤®: ђ®Ў®в ў Є®аҐ, «Ёбвмп ®Ўа Ў®в л
{Ћ‹}
ўўҐае_¤®_гЇ®а _Ё_®Ўа Ў®в вм
{Ёў аЁ в: Ћ‹Ќ}
while Ґбвм_бЁ§г do begin
| if Ґбвм_бЇа ў then begin {Ћ‹Ќ, Ґбвм бЇа ў }
| | ўЇа ў®;
| | {Ћ‹}
| | ўўҐае_¤®_гЇ®а _Ё_®Ўа Ў®в вм;
| end else begin
| | {Ћ‹Ќ, Ґ Ґбвм_бЇа ў , Ґбвм_бЁ§г}
| | ўЁ§;
| end;
end;
{Ћ‹Ќ, ђ®Ў®в ў Є®аҐ => ўбҐ «Ёбвмп ®Ўа Ў®в л}
Ћбв «®бм ў®бЇ®«м§®ў вмбп б«Ґ¤гойЁ¬Ё бў®©бвў ¬Ё Є®¬ ¤ ђ®Ў®в
(ᢥаег § ЇЁб л гб«®ўЁп, ў Є®в®але ўлЇ®«пҐвбп Є®¬ ¤ , бЁ§г -
г⢥তҐЁп ® १г«мв ⥠ҐҐ ўлЇ®«ҐЁп):
(1) {Ћ‹, Ґ Ґбвм_ᢥаег} (2) {Ћ‹}
®Ўа Ў®в вм ўўҐае_ «Ґў®
{Ћ‹Ќ} {Ћ‹}
(3) {Ґбвм_бЇа ў , Ћ‹Ќ} (4) {Ґ Ґбвм_бЇа ў , Ћ‹Ќ}
ўЇа ў® ўЁ§
{Ћ‹} {Ћ‹Ќ}
3.1.2. „®Є § вм, зв® ЇаЁўҐ¤Ґ п Їа®Ја ¬¬ § ўҐаи Ґв а Ў®вг
( «оЎ®¬ Є®Ґз®¬ ¤ҐаҐўҐ).
ђҐиҐЁҐ. Џа®жҐ¤га ўўҐае_ «Ґў® § ўҐаи Ґв а Ў®вг (ўлб®в
ђ®Ў®в Ґ ¬®¦Ґв 㢥«ЁзЁў вмбп ЎҐбЄ®Ґз®). …б«Ё Їа®Ја ¬¬ а Ў®-
в Ґв ЎҐбЄ®Ґз®, в®, Ї®бЄ®«мЄг «Ёбвмп Ґ ®Ўа Ў влў овбп Ї®ўв®а-
®, зЁ п б ҐЄ®в®а®Ј® ¬®¬Ґв Ё ®¤Ё «Ёбв Ґ ®Ўа Ў влў Ґвбп.
Ђ нв® ў®§¬®¦®, в®«мЄ® Ґб«Ё ђ®Ў®в ўбҐ ўаҐ¬п бЇгбЄ Ґвбп ўЁ§.
Џа®вЁў®аҐзЁҐ. (ЋЎ ®жҐЄҐ зЁб« ¤Ґ©бвўЁ© б¬. ¤ «ҐҐ.)
3.1.3. „®Є § вм Їа ўЁ«м®бвм б«Ґ¤го饩 Їа®Ја ¬¬л ®Ўе®¤ ¤Ґ-
ॢ :
var state: (WL, WLU);
state := WL;
while Ґбвм_бЁ§г or (state <> WLU) do begin
| if (state = WL) and Ґбвм_ᢥаег then begin
| | ўўҐае;
| end else if (state = WL) and not Ґбвм_ᢥаег then begin
| | ®Ўа Ў®в вм; state := WLU;
| end else if (state = WLU) and Ґбвм_бЇа ў then begin
| | ўЇа ў®; state := WL;
| end else begin {state = WLU, not Ґбвм_бЇа ў , Ґбвм_бЁ§г}
| | ўЁ§;
| end;
end;
ђҐиҐЁҐ. €ў аЁ в жЁЄ« :
state = WL => Ћ‹
state = WLU => Ћ‹Ќ
„®Є § ⥫мбвў® § ўҐа襨п а Ў®вл: ЇҐаҐе®¤ Ё§ б®бв®пЁп Ћ‹ ў Ћ‹Ќ
ў®§¬®¦Ґ в®«мЄ® ЇаЁ ®Ўа Ў®вЄҐ ўҐаиЁл, Ї®н⮬㠥᫨ Їа®Ја ¬¬
а Ў®в Ґв ЎҐбЄ®Ґз®, в® б ҐЄ®в®а®Ј® ¬®¬Ґв § 票Ґ state Ґ
¬ҐпҐвбп, зв® Ґў®§¬®¦®.
3.1.4. ђҐиЁвм § ¤ зг ®Ў ®Ўе®¤Ґ ¤ҐаҐў , Ґб«Ё ¬л е®вЁ¬, зв®Ўл
®Ўа Ў влў «Ёбм ўбҐ ўҐаиЁл (Ґ в®«мЄ® «Ёбвмп).
ђҐиҐЁҐ. Џгбвм x - ҐЄ®в®а п ўҐаиЁ . ’®Ј¤ «оЎ п ўҐаиЁ y
®в®бЁвбп Є ®¤®© Ё§ зҐвлаҐе Є ⥣®аЁ©. ђ бᬮваЁ¬ Їгвм Ё§ Є®ап
ў y. Ћ ¬®¦Ґв:
( ) Ўлвм з бвмо ЇгвЁ Ё§ Є®ап ў x (y Ё¦Ґ x);
(Ў) ᢥагвм «Ґў® б ЇгвЁ ў x (y «ҐўҐҐ x);
(ў) Їа®©вЁ зҐаҐ§ x (y ¤ x);
(Ј) ᢥагвм Їа ў® б ЇгвЁ ў x (y Їа ўҐҐ x);
‚ з бв®бвЁ, б ¬ ўҐаиЁ x ®в®бЁвбп Є Є ⥣®аЁЁ (ў). “б«®ўЁп
⥯Ґам Ўг¤гв в ЄЁ¬Ё:
(ЋЌ‹) ®Ўа Ў®в л ўбҐ ўҐаиЁл Ё¦Ґ Ё «ҐўҐҐ;
(ЋЌ‹Ќ) ®Ўа Ў®в л ўбҐ ўҐаиЁл Ё¦Ґ, «ҐўҐҐ Ё ¤.
‚®в Є Є Ўг¤Ґв ўлЈ«п¤Ґвм Їа®Ја ¬¬ :
procedure ўўҐае_¤®_гЇ®а _Ё_®Ўа Ў®в вм
| {¤ ®: (ЋЌ‹), ¤®: (ЋЌ‹Ќ)}
begin
| {Ёў аЁ в: ЋЌ‹}
| while Ґбвм_ᢥаег do begin
| | ®Ўа Ў®в вм
| | ўўҐае_ «Ґў®
| end
| {ЋЌ‹, ђ®Ў®в ў «ЁбвҐ}
| ®Ўа Ў®в вм;
| {ЋЌ‹Ќ}
end;
Ћб®ў®© «Ј®аЁв¬:
¤ ®: ђ®Ў®в ў Є®аҐ, ЁзҐЈ® Ґ ®Ўа Ў®в ®
¤®: ђ®Ў®в ў Є®аҐ, ўбҐ ўҐаиЁл ®Ўа Ў®в л
{ЋЌ‹}
ўўҐае_¤®_гЇ®а _Ё_®Ўа Ў®в вм
{Ёў аЁ в: ЋЌ‹Ќ}
while Ґбвм_бЁ§г do begin
| if Ґбвм_бЇа ў then begin {ЋЌ‹Ќ, Ґбвм бЇа ў }
| | ўЇа ў®;
| | {ЋЌ‹}
| | ўўҐае_¤®_гЇ®а _Ё_®Ўа Ў®в вм;
| end else begin
| | {Ћ‹Ќ, Ґ Ґбвм_бЇа ў , Ґбвм_бЁ§г}
| | ўЁ§;
| end;
end;
{ЋЌ‹Ќ, ђ®Ў®в ў Є®аҐ => ўбҐ ўҐаиЁл ®Ўа Ў®в л}
3.1.5. ЏаЁўҐ¤Ґ п в®«мЄ® зв® Їа®Ја ¬¬ ®Ўа Ў влў Ґв ўҐаиЁ-
г ¤® в®Ј®, Є Є ®Ўа Ў®в «оЎ®© Ё§ ҐҐ Ї®в®¬Є®ў. Љ Є Ё§¬ҐЁвм ҐҐ,
зв®Ўл Є ¦¤ п ўҐаиЁ , Ґ пў«пой пбп «Ёб⮬, ®Ўа Ў влў « бм ¤ў ¦-
¤л: ®¤Ё а § ¤®, ¤агЈ®© а § Ї®б«Ґ ўбҐе бў®Ёе Ї®в®¬Є®ў? (‹Ёбвмп
Ї®-ЇаҐ¦Ґ¬г ®Ўа Ў влў овбп Ї® а §г.)
ђҐиҐЁҐ. Џ®¤ "®Ўа Ў®в ® Ё¦Ґ Ё «ҐўҐҐ" Ўг¤Ґ¬ Ї®Ё¬ вм "Ё¦Ґ
®Ўа Ў®в ® Ї® а §г, б«Ґў ®Ўа Ў®в ® Ї®«®бвмо («Ёбвмп Ї® а §г,
®бв лҐ Ї® ¤ў )". Џ®¤ "®Ўа Ў®в ® Ё¦Ґ, «ҐўҐҐ Ё ¤" Ўг¤Ґ¬ Ї®Ё-
¬ вм "Ё¦Ґ ®Ўа Ў®в ® Ї® а §г, «ҐўҐҐ Ё ¤ - Ї®«®бвмо".
Џа®Ја ¬¬ Ўг¤Ґв в Є®©:
procedure ўўҐае_¤®_гЇ®а _Ё_®Ўа Ў®в вм
| {¤ ®: (ЋЌ‹), ¤®: (ЋЌ‹Ќ)}
begin
| {Ёў аЁ в: ЋЌ‹}
| while Ґбвм_ᢥаег do begin
| | ®Ўа Ў®в вм
| | ўўҐае_ «Ґў®
| end
| {ЋЌ‹, ђ®Ў®в ў «ЁбвҐ}
| ®Ўа Ў®в вм;
| {ЋЌ‹Ќ}
end;
Ћб®ў®© «Ј®аЁв¬:
¤ ®: ђ®Ў®в ў Є®аҐ, ЁзҐЈ® Ґ ®Ўа Ў®в ®
¤®: ђ®Ў®в ў Є®аҐ, ўбҐ ўҐаиЁл ®Ўа Ў®в л
{ЋЌ‹}
ўўҐае_¤®_гЇ®а _Ё_®Ўа Ў®в вм
{Ёў аЁ в: ЋЌ‹Ќ}
while Ґбвм_бЁ§г do begin
| if Ґбвм_бЇа ў then begin {ЋЌ‹Ќ, Ґбвм бЇа ў }
| | ўЇа ў®;
| | {ЋЌ‹}
| | ўўҐае_¤®_гЇ®а _Ё_®Ўа Ў®в вм;
| end else begin
| | {Ћ‹Ќ, Ґ Ґбвм_бЇа ў , Ґбвм_бЁ§г}
| | ўЁ§;
| | ®Ўа Ў®в вм;
| end;
end;
{ЋЌ‹Ќ, ђ®Ў®в ў Є®аҐ => ўбҐ ўҐаиЁл ®Ўа Ў®в л Ї®«®бвмо}
3.1.6. „®Є § вм, зв® зЁб«® ®ЇҐа жЁ© ў нв®© Їа®Ја ¬¬Ґ Ї® Ї®-
ап¤Єг а ў® зЁб«г ўҐаиЁ ¤ҐаҐў . (Љ Є Ё ў ¤агЈЁе Їа®Ја ¬¬ е, Є®-
в®алҐ ®в«Ёз овбп ®в нв®© «Ёим Їа®ЇгбЄ®¬ ҐЄ®в®але Є®¬ ¤ "®Ўа -
Ў®в вм".)
“Є § ЁҐ. ЏаЁ¬Ґа® Є ¦¤®Ґ ўв®а®Ґ ¤Ґ©бвўЁҐ ЇаЁ ЁбЇ®«ҐЁЁ
нв®© Їа®Ја ¬¬л - ®Ўа Ў®вЄ ўҐаиЁл, Є ¦¤ п ўҐаиЁ ®Ўа Ў влў -
Ґвбп ¬ ЄбЁ¬г¬ ¤ў ¦¤л.
’ҐЇҐам ॠ«Ё§гҐ¬ ®ЇҐа жЁЁ б ¤ҐаҐў®¬ Ї®§ЁжЁ©. Џ®§ЁжЁо Ўг¤Ґ¬
ЇаҐ¤бв ў«пвм б Ї®¬®ймо ЇҐаҐ¬Ґ®© k: 0..n (зЁб«® дҐа§Ґ©) Ё ¬ б-
бЁў c: array [1..n] of 1..n (c [i] - Є®®а¤Ё вл дҐа§п i-®©
Ј®аЁ§®в «Ё; ЇаЁ i > k § 票Ґ c [i] а®«Ё Ґ ЁЈа Ґв). ЏаҐ¤Ї®« -
Ј Ґвбп, зв® ўбҐ Ї®§ЁжЁЁ ¤®ЇгбвЁ¬л (Ґб«Ё гЎа вм ўҐа奣® дҐа§п,
®бв «млҐ Ґ Ўмов ¤агЈ ¤агЈ ).
program queens;
| const n = ...;
| var
| k: 0..n;
| c: array [1..n] of 1..n;
|
| procedure begin_work; { з вм а Ў®вг}
| begin
| | k := 0;
| end;
|
| function danger: boolean; {ўҐаеЁ© дҐа§м Ї®¤ Ў®Ґ¬}
| | var b: boolean; i: integer;
| begin
| | if k <= 1 then begin
| | | danger := false;
| | end else begin
| | | b := false; i := 1;
| | | {b <=> ўҐаеЁ© дҐа§м Ї®¤ Ў®Ґ¬ дҐа§Ґ© б ®¬Ґа ¬Ё < i}
| | | while i <> k do begin
| | | | b := b or (c[i]=c[k]) {ўҐавЁЄ «м}
| | | | or (abs(c[[i]-c[k]))=abs(i-k)); {¤Ё Ј® «м}
| | | | i := i+ 1;
| | | end;
| | | danger := b;
| | end;
| end;
|
| function is_up: boolean {Ґбвм_ᢥаег}
| begin
| | is_up := (k < n) and not danger;
| end;
|
| function is_right: boolean {Ґбвм_бЇа ў }
| begin
| | is_right := (k > 0) and (c[k] < n);
| end;
| {ў®§¬®¦ ®иЁЎЄ : ЇаЁ k=0 Ґ ®ЇаҐ¤Ґ«Ґ® c[k]}
|
| function is_down: boolean {Ґбвм_бЁ§г}
| begin
| | is_up := (k > 0);
| end;
|
| procedure up; {ўўҐае_ «Ґў®}
| begin {k < n}
| | k := k + 1;
| | c [k] := 1;
| end;
|
| procedure right; {ўЇа ў®}
| begin {k > 0, c[k] < n}
| | c [k] := c [k] + 1;
| end;
|
| procedure down; {ўЁ§}
| begin {k > 0}
| | k := k - 1;
| end;
|
| procedure work; {®Ўа Ў®в вм}
| | var i: integer;
| begin
| | if (k = n) and not danger then begin
| | | for i := 1 to n do begin
| | | | write ('<', i, ',' , c[i], '> ');
| | | end;
| | | writeln;
| | end;
| end;
|
| procedure UW; {ўўҐае_¤®_гЇ®а _Ё_®Ўа Ў®в вм}
| begin
| | while is_up do begin
| | | up;
| | end
| | work;
| end;
|
begin
| begin_work;
| UW;
| while is_down do begin
| | if is_right then begin
| | | right;
| | | UW;
| | end else begin
| | | down;
| | end;
| end;
end.
3.1.7. ЏаЁўҐ¤Ґ п Їа®Ја ¬¬ ва вЁв ¤®ў®«м® ¬®Ј® ўаҐ¬ҐЁ
ўлЇ®«ҐЁҐ Їа®ўҐаЄЁ Ґбвм_ᢥаег (Їа®ўҐаЄ , 室Ёвбп «Ё
ўҐаеЁ© дҐа§м Ї®¤ Ў®Ґ¬, вॡгҐв зЁб« ¤Ґ©бвўЁ© Ї®ап¤Є n). €§¬Ґ-
Ёвм ॠ«Ё§ жЁо ®ЇҐа жЁ© б ¤ҐаҐў®¬ Ї®§ЁжЁ© в Є, зв®Ўл ўбҐ ваЁ
Їа®ўҐаЄЁ Ґбвм_ᢥаег/бЇа ў /бЁ§г Ё ᮮ⢥вбвўгойЁҐ Є®¬ ¤л ваҐ-
Ў®ў «Ё Ўл Є®«ЁзҐбвў ¤Ґ©бвўЁ©, ®Ја ЁзҐ®Ј® Ґ § ўЁбп饩 ®в n
Є®бв в®©.
ђҐиҐЁҐ. „«п Є ¦¤®© ўҐавЁЄ «Ё, Є ¦¤®© ў®б室п饩 Ё Є ¦¤®©
Ёб室п饩 ¤Ё Ј® «Ё Ўг¤Ґ¬ еа Ёвм Ўг«ҐўбЄ®Ґ § 票Ґ - ᢥ¤ҐЁп
® ⮬, 室Ёвбп «Ё нв®© «ЁЁЁ дҐа§м (ўҐаеЁ© дҐа§м Ґ гзЁвл-
ў Ґвбп). (‡ ¬ҐвЁ¬, зв® ў бЁ«г ¤®ЇгбвЁ¬®бвЁ Ї®§ЁжЁЁ Є ¦¤®© Ё§
«ЁЁ© ¬®¦Ґв Ўлвм Ґ Ў®«ҐҐ ®¤®Ј® дҐа§п.).
3.2. ЋЎе®¤ ¤ҐаҐў ў ¤агЈЁе § ¤ з е.
3.2.1. €бЇ®«м§®ў вм ¬Ґв®¤ ®Ўе®¤ ¤ҐаҐў ¤«п аҐиҐЁп б«Ґ¤г-
о饩 § ¤ зЁ: ¤ ¬ ббЁў Ё§ n 楫ле Ї®«®¦ЁвҐ«мле зЁбҐ«
a[1]..a[n] Ё зЁб«® s; вॡгҐвбп г§ вм, ¬®¦Ґв «Ё зЁб«® s Ўлвм
ЇаҐ¤бв ў«Ґ® Є Є б㬬 ҐЄ®в®але Ё§ зЁбҐ« ¬ ббЁў a. (Љ ¦¤®Ґ
зЁб«® ¬®¦® ЁбЇ®«м§®ў вм Ґ Ў®«ҐҐ 祬 Ї® ®¤®¬г а §г.)
ђҐиҐЁҐ. Ѓг¤Ґ¬ § ¤ ў вм k-Ї®§ЁжЁо Ї®б«Ґ¤®ў ⥫м®бвмо Ё§ k
Ўг«ҐўбЄЁе § 票©, ®ЇаҐ¤Ґ«пойЁе, ўе®¤пв «Ё ў б㬬г зЁб«
a[1]..a[k] Ё«Ё Ґ ўе®¤пв. Џ®§ЁжЁп ¤®ЇгбвЁ¬ , Ґб«Ё ҐҐ б㬬 Ґ
ЇаҐў®б室Ёв s.
‡ ¬Ґз ЁҐ. Џ® ба ўҐЁо б Ї®«л¬ ЇҐаҐЎ®а®¬ ўбҐе (2 ў б⥯Ґ-
Ё n) Ї®¤¬®¦Ґбвў вгв Ґбвм ҐЄ®в®ал© ўлЁЈали. Њ®¦® в Є¦Ґ ЇаҐ¤-
ў аЁвҐ«м® ®вб®авЁа®ў вм ¬ ббЁў a ў гЎлў о饬 Ї®ап¤ЄҐ, в Є¦Ґ
бзЁв вм Ґ¤®ЇгбвЁ¬л¬Ё ⥠Ї®§ЁжЁЁ, ў Є®в®але б㬬 ®вЎа®иҐле
з«Ґ®ў Ў®«миҐ, 祬 а §®бвм бг¬¬л ўбҐе з«Ґ®ў Ё s. Џ®б«Ґ¤Ё©
ЇаЁс¬ §лў ов "¬Ґв®¤®¬ ўҐвўҐ© Ё Ја Ёж". Ќ® ЇаЁжЁЇЁ «м®Ј®
г«гзиҐЁп Ї® ба ўҐЁо б Ї®«л¬ ЇҐаҐЎ®а®¬ вгв Ґ Ї®«гз Ґвбп (нв
§ ¤ з , Є Є Ј®ў®апв, NP-Ї®« , б¬. Ї®¤а®Ў®бвЁ ў ЄЁЈҐ Ђе®,
•®ЇЄа®дв Ё “«м¬ "Џ®бв஥ЁҐ Ё «Ё§ ўлзЁб«ЁвҐ«мле «Ј®аЁв-
¬®ў"). ’а ¤ЁжЁ®®Ґ §ў ЁҐ нв®© § ¤ зЁ - "§ ¤ з ® аоЄ§ ЄҐ"
(аоЄ§ Є ®ЎйҐ© Јаг§®Ї®¤кҐ¬®бвмо s 㦮 гЇ Є®ў вм Ї®¤ § ўп§Єг,
а бЇ®« Ј п ЇаҐ¤¬Ґв ¬Ё ўҐб a[1]..a[n]). ‘¬. в Є¦Ґ ў Ј« ўҐ 7
(а §¤Ґ« ® ¤Ё ¬ЁзҐбЄ®¬ Їа®Ја ¬¬Ёа®ў ЁЁ) «Ј®аЁв¬ Ґс аҐиҐЁп,
Ї®«Ё®¬Ё «мл© Ї® n+s.
3.2.2. ЏҐаҐзЁб«Ёвм ўбҐ Ї®б«Ґ¤®ў ⥫м®бвЁ Ё§ n г«Ґ©, Ґ¤Ё-
Ёж Ё ¤ў®ҐЄ, ў Є®в®але ЁЄ Є п ЈагЇЇ жЁда Ґ Ї®ўв®апҐвбп ¤ў
а § Ї®¤ап¤ (Ґв ЄгбЄ ўЁ¤ XX).
3.2.3. Ђ «®ЈЁз п § ¤ з ¤«п Ї®б«Ґ¤®ў ⥫м®б⥩ г«Ґ© Ё
Ґ¤ЁЁж, ў Є®в®але ЁЄ Є п ЈагЇЇ жЁда Ґ Ї®ўв®апҐвбп ваЁ а §
Ї®¤ап¤ (Ґв ЄгбЄ ўЁ¤ XXX).
Љ нв®© ¦Ґ Є ⥣®аЁЁ ®в®бпвбп § ¤ зЁ вЁЇ "¬®¦® «Ё б«®¦Ёвм
¤ го дЁЈгаг Ё§ ЇҐв ¬Ё®" Ё Ё¬ Ї®¤®ЎлҐ. ‚ Ёе ў ¦® 㬥«®Ґ
б®Єа 饨Ґ ЇҐаҐЎ®а (ў®ўаҐ¬п а бЇ®§ вм, зв® Ё¬Ґо饥бп а бЇ®«®-
¦ҐЁҐ дЁЈга®Є 㦥 Їа®вЁў®аҐзЁв вॡ®ў Ёп¬, Ё Ї® нв®© ўҐвўЁ Ї®-
ЁбЄ Ґ Їа®¤®«¦ вм).
ѓ« ў 4. ‘®авЁа®ўЄ .
4.1. Љў ¤а вЁзлҐ «Ј®аЁв¬л.
4.1.1. Џгбвм a[1], ..., a[n] - жҐ«лҐ зЁб« . ’ॡгҐвбп
Ї®бва®Ёвм ¬ ббЁў b[1], ..., b[n], ᮤҐа¦ йЁ© ⥠¦Ґ зЁб« , ¤«п
Є®в®але b[1] <= ... <= b[n].
‡ ¬Ґз ЁҐ. ‘।Ё зЁбҐ« a[1]...a[n] ¬®Јгв Ўлвм а ўлҐ. ’аҐ-
ЎгҐвбп, зв®Ўл Є ¦¤®Ґ 楫®Ґ зЁб«® ўе®¤Ё«® ў b[1]...b[n] бв®«мЄ®
¦Ґ а §, бЄ®«мЄ® Ё ў a[1]...a[n].
ђҐиҐЁҐ. “¤®Ў® бзЁв вм, зв® зЁб« a[1]..a[n] Ё b[1]..b[n]
ЇаҐ¤бв ў«пов б®Ў®© з «м®Ґ Ё Є®Ґз®Ґ § зҐЁп ¬ ббЁў x. ’аҐ-
Ў®ў ЁҐ "a Ё b ᮤҐа¦ в ®¤Ё Ё ⥠¦Ґ зЁб« " Ўг¤Ґв § ўҐ¤®¬® ўл-
Ї®«Ґ®, Ґб«Ё ў Їа®жҐббҐ а Ў®вл ¬л ®Ја ЁзЁ¬бп ЇҐаҐбв ®ўЄ ¬Ё
н«Ґ¬Ґв®ў x.
...
k := 0;
{k Ё¬ҐмиЁе н«Ґ¬Ґв®ў ¬ ббЁў x гбв ®ў«Ґл бў®Ё ¬Ґбв }
while k <> n do begin
| s := k + 1; t := k + 1;
| {x[s] - Ё¬ҐмиЁ© б।Ё x[k+1]...x[t] }
| while t<>n do begin
| | t := t + 1;
| | if x[t] < x[s] then begin
| | | s := t;
| | end;
| end;
| {x[s] - Ё¬ҐмиЁ© б।Ё x[k+1]..x[n] }
| ... ЇҐаҐбв ўЁвм x[s] Ё x[k+1];
| k := k + 1;
end;
4.1.2. „ вм ¤агЈ®Ґ аҐиҐЁҐ § ¤ зЁ б®авЁа®ўЄЁ, ЁбЇ®«м§го饥
Ёў аЁ в {ЇҐаўлҐ k н«Ґ¬Ґв®ў гЇ®а冷зҐл: x[1] <= ... <= x[k]}
ђҐиҐЁҐ.
k:=1
{ЇҐаўлҐ k н«Ґ¬Ґв®ў гЇ®а冷зҐл}
while k <> n do begin
| {k+1-л© н«Ґ¬Ґв Їа®¤ўЁЈ Ґвбп Є з «г, Ї®Є Ґ § ©¬Ґв
| ¤«Ґ¦ 饣® ¬Ґбв }
| t := k+1;
| {x[1] <= ... <= x[t-1] Ё x[t-1], x[t] <= ... <= x[k+1] }
| while (t > 1) and (x[t] < x[t-1]) do begin
| | ... Ї®¬Ґпвм x[t-1] Ё x[t];
| | t := t - 1;
| end;
end;
‡ ¬Ґз ЁҐ. „ҐдҐЄв Їа®Ја ¬¬л: ЇаЁ «®¦®¬ ўла ¦ҐЁЁ (t > 1)
Їа®ўҐаЄ x[t] < x[t-1] вॡгҐв ҐбгйҐбвўго饣® § 票п x[0].
ЋЎ ЇаҐ¤«®¦Ґле аҐиҐЁп вॡгов зЁб« ¤Ґ©бвўЁ©, Їа®Ї®ажЁ-
® «м®Ј® n*n. ‘гйҐбвўгов Ў®«ҐҐ нддҐЄвЁўлҐ «Ј®аЁв¬л.
4.2. Ђ«Ј®аЁв¬л Ї®ап¤Є n log n.
4.2.1. ЏаҐ¤«®¦Ёвм «Ј®аЁв¬ б®авЁа®ўЄЁ, зЁб«® ¤Ґ©бвўЁ© Є®в®-
а®Ј® Ўл«® Ўл Ї®ап¤Є n log n, в® Ґбвм Ґ ЇаҐў®б室Ё«® Ўл
C*n*log(n) ¤«п ҐЄ®в®а®Ј® C Ё ¤«п ўбҐе n.
Њл ЇаҐ¤«®¦Ё¬ ¤ў аҐиҐЁп.
ђҐиҐЁҐ 1. (б®авЁа®ўЄ б«ЁпЁҐ¬).
Џгбвм k - Ї®«®¦ЁвҐ«м®Ґ 楫®Ґ зЁб«®. ђ §®ЎмҐ¬ ¬ ббЁў
x[1]..x[n] ®в१ЄЁ ¤«Ёл k. (ЏҐаўл© - x[1]..x[k], § ⥬
x[k+1]..x[2k] Ё в.¤.) Џ®б«Ґ¤Ё© ®в१®Є Ўг¤Ґв ҐЇ®«л¬, Ґб«Ё n
Ґ ¤Ґ«Ёвбп k. Ќ §®ўҐ¬ ¬ ббЁў k-гЇ®а冷зҐл¬, Ґб«Ё Є ¦¤л© Ё§
нвЁе ®в१Є®ў гЇ®а冷зҐ. ‹оЎ®© ¬ ббЁў 1-гЇ®а冷зҐ. …б«Ё ¬ ббЁў
k-гЇ®ап¤®зҐ Ё n<=k, в® ® гЇ®а冷зҐ.
Њл ®ЇЁиҐ¬, Є Є ЇаҐ®Ўа §®ў вм k-гЇ®а冷зҐл© ¬ ббЁў ў
2k-гЇ®а冷зҐл© (Ё§ вҐе ¦Ґ н«Ґ¬Ґв®ў). ‘ Ї®¬®ймо нв®Ј® ЇаҐ®Ўа -
§®ў Ёп «Ј®аЁв¬ § ЇЁблў Ґвбп в Є:
k:=1;
{¬ ббЁў x пў«пҐвбп k-гЇ®а冷зҐл¬}
while k < n do begin
| .. ЇаҐ®Ўа §®ў вм k-гЇ®а冷зҐл© ¬ ббЁў ў 2k-гЇ®а冷зҐл©;
| k := 2 * k;
end;
’ॡ㥬®Ґ ЇаҐ®Ўа §®ў ЁҐ б®бв®Ёв ў ⮬,зв® ¬л ¬®Ј®Єа в®
"б«Ёў Ґ¬" ¤ў гЇ®а冷зҐле ®в१Є ¤«Ёл Ґ Ў®«миҐ k ў ®¤Ё
гЇ®а冷зҐл© ®в१®Є. Џгбвм Їа®жҐ¤га б«ЁпЁҐ (p,q,r: integer)
ЇаЁ p <=q <= r б«Ёў Ґв ®в१ЄЁ x[p+1]..x[q] Ё x[q+1]..x[r] ў
гЇ®а冷зҐл© ®в१®Є x[p+1]..x[r] (Ґ § ва ЈЁў п ¤агЈЁе з б⥩
¬ ббЁў x).
p q r
-------|---------------|---------------|-------
| гЇ®а冷зҐл© | гЇ®а冷зҐл© |
-------|---------------|---------------|-------
|
|
V
-------|-------------------------------|-------
| гЇ®а冷зҐл© |
-------|-------------------------------|-------
’®Ј¤ ЇаҐ®Ўа §®ў ЁҐ k-гЇ®а冷祮Ј® ¬ ббЁў ў 2k-гЇ®а冷зҐл©
®бгйҐбвў«пҐвбп в Є:
t:=0;
{t Єа в® 2k Ё«Ё t = n, x[1]..x[t] пў«пҐвбп
2k-гЇ®а冷зҐл¬; ®бв в®Є ¬ ббЁў x Ґ Ё§¬ҐЁ«бп}
while t + k < n do begin
| p := t;
| q := t+k;
| ...r := min (t+2*k, n); {ў Ї бЄ «Ґ Ґв дгЄжЁЁ min }
| б«ЁпЁҐ (p,q,r);
| t := r;
end;
‘«ЁпЁҐ вॡгҐв ўбЇ®¬®Ј ⥫쮣® ¬ ббЁў ¤«п § ЇЁбЁ १г«мв в®ў
б«ЁпЁп - ®Ў®§ зЁ¬ ҐЈ® b. —ҐаҐ§ p0 Ё q0 ®Ў®§ зЁ¬ ®¬Ґа Ї®б-
«Ґ¤Ёе н«Ґ¬Ґв®ў гз бвЄ®ў, Ї®¤ўҐаЈиЁебп б«ЁпЁо, s0 - Ї®б«Ґ¤Ё©
§ ЇЁб л© ў ¬ ббЁў b н«Ґ¬Ґв. Ќ Є ¦¤®¬ и ЈҐ б«ЁпЁп Їа®Ё§ў®-
¤Ёвбп ®¤® Ё§ ¤ўге ¤Ґ©бвўЁ©:
b[s0+1]:=x[p0+1];
p0:=p0+1;
s0:=s0+1;
Ё«Ё
b[s0+1]:=x[q0+1];
q0:=q0+1;
s0:=s0+1;
ЏҐаў®Ґ ¤Ґ©бвўЁҐ (ў§пвЁҐ н«Ґ¬Ґв Ё§ ЇҐаў®Ј® ®в१Є ) ¬®¦Ґв Їа®-
Ё§ў®¤Ёвмбп ЇаЁ ¤ўге гб«®ўЁпе:
(1) ЇҐаўл© ®в१®Є Ґ Є®зЁ«бп (p0 < q);
(2) ўв®а®© ®в१®Є Є®зЁ«бп (q0 = r) Ё«Ё Ґ Є®зЁ«бп, ®
н«Ґ¬Ґв ў Ґ¬ Ґ ¬ҐмиҐ [(q0 < r) Ё (x[p0+1] <= x[q0+1])].
Ђ «®ЈЁз® ¤«п ўв®а®Ј® ¤Ґ©бвўЁп. €в Є, Ї®«гз Ґ¬
p0 := p; q0 := q; s0 := p;
while (p0 <> q) or (q0 <> r) do begin
| if (p0 < q) and ((q0 = r) or ((q0 < r) and
| | (x[p0+1] <= x[q0+1]))) then begin
| | b [s0+1] := x [p0+1];
| | p0 := p0+1;
| | s0 := s0+1;
| end else begin
| | {(q0 < r) and ((p0 = q) or ((p0<q) and
| | (x[p0+1] >= x[q0+1])))}
| | b [s0+1] := x [q0+1];
| | q0 := q0 + 1;
| | s0 := s0 + 1;
| end;
end;
(…б«Ё ®Ў ®в१Є Ґ Є®зҐл Ё ЇҐаўлҐ ҐўлЎа лҐ н«Ґ¬Ґвл ў Ёе
а ўл, в® ¤®ЇгбвЁ¬л ®Ў ¤Ґ©бвўЁп; ў Їа®Ја ¬¬Ґ ўлЎа ® ЇҐаў®Ґ.)
Џа®Ја ¬¬ Ё¬ҐҐв ЇаЁўлзл© ¤ҐдҐЄв: ®Ўа 饨Ґ Є ҐбгйҐбвўг-
ойЁ¬ н«Ґ¬Ґв ¬ ¬ ббЁў ЇаЁ ўлзЁб«ҐЁЁ Ўг«ҐўбЄЁе ўла ¦ҐЁ©.
ђҐиҐЁҐ 2 (б®авЁа®ўЄ ¤ҐаҐў®¬).
Ќ аЁб㥬 "Ї®«®Ґ ¤ў®Ёз®Ґ ¤ҐаҐў®" - Є авЁЄг, ў Є®в®а®©
бЁ§г ®¤Ё Єа㦮Є, Ё§ ҐЈ® ўл室пв бв५ЄЁ ў ¤ў ¤агЈЁе, Ё§ Є ¦-
¤®Ј® - ў ¤ў ¤агЈЁе Ё в Є ¤ «ҐҐ:
.............
o o o o
\/ \/
o o
\ /
o
Ѓг¤Ґ¬ Ј®ў®аЁвм, зв® бв५ЄЁ ўҐ¤гв "®в ®вж®ў Є бл®ўмп¬": г
Є ¦¤®Ј® Єаг¦Є ¤ў бл Ё ®¤Ё ®вҐж (Ґб«Ё Єа㦮Є Ґ ўҐаеЁ©).
ЏаҐ¤Ї®«®¦Ё¬ ¤«п Їа®бв®вл, зв® Є®«ЁзҐбвў® Ї®¤«Ґ¦ йЁе б®авЁа®ўЄҐ
зЁбҐ« Ґбвм б⥯Ґм ¤ў®©ЄЁ, Ё ®Ё ¬®Јгв § Ї®«Ёвм ®¤Ё Ё§ а冷ў
楫ЁЄ®¬. ‡ ЇЁиҐ¬ Ёе вг¤ . ‡ ⥬ § Ї®«Ё¬ з бвм ¤ҐаҐў Ї®¤ Ё¬ Ї®
Їа ўЁ«г:
зЁб«® ў Єаг¦ЄҐ = ¬ЁЁ¬г¬ Ё§ зЁбҐ« ў Єаг¦Є е-бл®ўмпе
’Ґ¬ б ¬л¬ ў Є®аҐ ¤ҐаҐў (Ё¦Ґ¬ Єаг¦ЄҐ) Ўг¤Ґв § ЇЁб ® ¬ЁЁ-
¬ «м®Ґ зЁб«® ў® ўбҐ¬ ¬ ббЁўҐ.
€§л¬Ґ¬ Ё§ б®авЁа㥬®Ј® ¬ ббЁў ¬ЁЁ¬ «мл© н«Ґ¬Ґв. „«п
нв®Ј® ҐЈ® ¤® ў з «Ґ ©вЁ. ќв® ¬®¦® ᤥ« вм, Ё¤п ®в Є®ап:
®в ®вж ЇҐаҐе®¤Ё¬ Є ⮬г блг, Ј¤Ґ § ЇЁб ® в® ¦Ґ зЁб«®. €§кпў
¬ЁЁ¬ «мл© н«Ґ¬Ґв, § ¬ҐЁ¬ ҐЈ® бЁ¬ў®«®¬ "ЎҐбЄ®Ґз®бвм" Ё
бЄ®а४вЁа㥬 Ў®«ҐҐ Ё§ЄЁҐ пагбл (¤«п нв®Ј® ¤® б®ў Їа®©вЁ
Їгвм Є Є®ао). ЏаЁ н⮬ бзЁв Ґ¬, зв® ¬ЁЁ¬г¬ Ё§ n Ё ЎҐбЄ®Ґз®б-
вЁ а ўҐ n. ’®Ј¤ ў Є®аҐ Ї®пўЁвбп ўв®а®© Ї® ўҐ«ЁзЁҐ н«Ґ¬Ґв,
¬л Ё§л¬ Ґ¬ ҐЈ®, § ¬Ґпп ЎҐбЄ®Ґз®бвмо Ё Є®а४вЁагп ¤ҐаҐў®. ’ Є
Ї®б⥯Ґ® ¬л Ё§л¬Ґ¬ ўбҐ н«Ґ¬Ґвл ў Ї®ап¤ЄҐ ў®§а бв Ёп, Ї®Є ў
Є®аҐ Ґ ®бв Ґвбп ЎҐбЄ®Ґз®бвм.
ЏаЁ § ЇЁбЁ нв®Ј® «Ј®аЁв¬ Ї®«Ґ§® 㬥஢ вм Єа㦮窨 зЁб-
« ¬Ё 1, 2, ...: бл®ўмп¬Ё Єаг¦Є ®¬Ґа n пў«повбп Єаг¦ЄЁ 2*n Ё
2*n+1. Џ®¤а®Ў®Ґ Ё§«®¦ҐЁҐ нв®Ј® «Ј®аЁв¬ ¬л ®ЇгбвЁ¬, Ї®бЄ®«мЄг
¬л Ё§«®¦Ё¬ Ў®«ҐҐ нддҐЄвЁўл© ў аЁ в, Ґ вॡгойЁ© ¤®Ї®«Ё-
⥫쮩 Ї ¬пвЁ, Єа®¬Ґ Є®Ґз®Ј® зЁб« ЇҐаҐ¬Ґле (ў ¤®Ї®«ҐЁЁ Є
б®авЁа㥬®¬г ¬ ббЁўг).
Њл Ўг¤Ґ¬ § ЇЁблў вм б®авЁагҐ¬лҐ зЁб« ў® ўбҐе ўҐаиЁ е ¤Ґ-
ॢ , Ґ в®«мЄ® ўҐа奬 га®ўҐ. Џгбвм x[1]..x[n] - ¬ ббЁў,
Ї®¤«Ґ¦ йЁ© б®авЁа®ўЄҐ. ‚ҐаиЁ ¬Ё ¤ҐаҐў Ўг¤гв зЁб« ®в 1 ¤® n; ®
зЁб«Ґ x[i] ¬л Ўг¤Ґ¬ Ј®ў®аЁвм Є Є ® зЁб«Ґ, бв®п饬 ў ўҐаиЁҐ i. ‚
Їа®жҐбᥠб®авЁа®ўЄЁ Є®«ЁзҐбвў® ўҐаиЁ ¤ҐаҐў Ўг¤Ґв б®Єа й вмбп.
—Ёб«® ўҐаиЁ вҐЄг饣® ¤ҐаҐў Ўг¤Ґ¬ еа Ёвм ў ЇҐаҐ¬Ґ®© k. ’ ЄЁ¬
®Ўа §®¬, ў Їа®жҐббҐ а Ў®вл «Ј®аЁв¬ ¬ ббЁў x[1]..x[n] ¤Ґ«Ёвбп
¤ўҐ з бвЁ: ў x[1]..x[k] еа пвбп зЁб« ¤ҐаҐўҐ, ў x[k+1]
.. x[n] еа Ёвбп 㦥 ®вб®авЁа®ў п ў Ї®ап¤ЄҐ ў®§а бв Ёп з бвм
¬ ббЁў - н«Ґ¬Ґвл, 㦥 § пўиЁҐ бў®Ґ § Є®®Ґ ¬Ґбв®.
Ќ Є ¦¤®¬ и ЈҐ «Ј®аЁв¬ Ўг¤Ґв Ё§л¬ вм ¬ ЄбЁ¬ «мл© н«Ґ¬Ґв
¤ҐаҐў Ё Ї®¬Ґй вм ҐЈ® ў ®вб®авЁа®ў го з бвм, ®бў®Ў®¤ЁўиҐҐбп
ў १г«мв ⥠᮪а йҐЁп ¤ҐаҐў ¬Ґбв®.
„®Ј®ў®аЁ¬бп ® вҐа¬Ё®«®ЈЁЁ. ‚ҐаиЁ ¬Ё ¤ҐаҐў бзЁв овбп зЁб-
« ®в 1 ¤® ⥪г饣® § зҐЁп ЇҐаҐ¬Ґ®© k. “ Є ¦¤®© ўҐаиЁл s
¬®Јгв Ўлвм бл®ўмп 2s Ё 2s+1. …б«Ё ®Ў нвЁе зЁб« Ў®«миҐ k, в®
бл®ўҐ© Ґв; в Є п ўҐаиЁ §лў Ґвбп «Ёб⮬. …б«Ё 2s=k, в® ўҐа-
иЁ s Ё¬ҐҐв а®ў® ®¤®Ј® бл (2s).
„«п Є ¦¤®Ј® s Ё§ 1..k а бᬮваЁ¬ "Ї®¤¤ҐаҐў®" б Є®аҐ¬ ў s:
®® ᮤҐа¦Ёв ўҐаиЁг s Ё ўбҐе ҐҐ Ї®в®¬Є®ў (бл®ўҐ©, бл®ўҐ© бл-
®ўҐ© Ё в.¤. - ¤® вҐе Ї®а, Ї®Є ¬л Ґ ўл©¤Ґ¬ Ё§ ®в१Є 1..k).
‚ҐаиЁг s Ўг¤Ґ¬ §лў вм ॣг«па®©, Ґб«Ё бв®п饥 ў Ґ© зЁб«® -
¬ ЄбЁ¬ «мл© н«Ґ¬Ґв s-Ї®¤¤ҐаҐў ; s-Ї®¤¤ҐаҐў® §®ўҐ¬ ॣг«па-
л¬, Ґб«Ё ўбҐ ҐЈ® ўҐаиЁл ॣг«пал. (‚ з бв®бвЁ, «оЎ®© «Ёбв
®Ўа §гҐв ॣг«п஥ ®¤®н«Ґ¬Ґв®Ґ Ї®¤¤ҐаҐў®.)
‘奬 «Ј®аЁв¬ в Є®ў :
k:= n
... ‘¤Ґ« вм 1-Ї®¤¤ҐаҐў® ॣг«пал¬;
{x[1],..,x[k] <= x[k+1] <= ... <= x[n]; 1-Ї®¤¤ҐаҐў® ॣг«па®,
ў з бв®бвЁ, x[1] - ¬ ЄбЁ¬ «мл© н«Ґ¬Ґв б।Ё x[1]..x[k]}
while k <> 1 do begin
| ... ®Ў¬Ґпвм ¬Ґбв ¬Ё x[1] Ё x[k];
| k := k - 1;
| {x[1]..x[k-1] <= x[k] <=...<= x[n]; 1-Ї®¤¤ҐаҐў® ॣг-
| «па® ўҐ§¤Ґ, Єа®¬Ґ, ў®§¬®¦®, б ¬®Ј® Є®ап }
| ... ў®ббв ®ўЁвм ॣг«па®бвм 1-Ї®¤¤ҐаҐў ўбо¤г
end;
‚ Є зҐб⢥ ўбЇ®¬®Ј ⥫쮩 Їа®жҐ¤гал ¬ Ї® ¤®ЎЁвбп Їа®жҐ¤га
ў®ббв ®ў«ҐЁп ॣг«па®бвЁ s-Ї®¤¤ҐаҐў ў Є®аҐ. ‚®в ® :
{s-Ї®¤¤ҐаҐў® ॣг«па® ўҐ§¤Ґ, Єа®¬Ґ, ў®§¬®¦®, Є®ап}
t := s;
{s-Ї®¤¤ҐаҐў® ॣг«па® ўҐ§¤Ґ, Єа®¬Ґ, ў®§¬®¦®, ўҐаиЁл t}
while ((2*t+1 <= k) and (x[2*t+1] > x[t])) or
| ((2*t <= k) and (x[2*t] > x[t])) do begin
| if (2*t+1 <= k) and (x[2*t+1] >= x[2*t]) then begin
| | ... ®Ў¬Ґпвм x[t] Ё x[2*t+1];
| | t := 2*t + 1;
| end else begin
| | ... ®Ў¬Ґпвм x[t] Ё x[2*t];
| | t := 2*t;
| end;
end;
—в®Ўл гЎҐ¤Ёвмбп ў Їа ўЁ«м®бвЁ нв®© Їа®жҐ¤гал, Ї®б¬®ваЁ¬
ҐҐ Ї®ўЁ¬ ⥫쥥. Џгбвм ў s-Ї®¤¤ҐаҐўҐ ўбҐ ўҐаиЁл, Єа®¬Ґ а §ўҐ
зв® ўҐаиЁл t, ॣг«пал. ђ бᬮваЁ¬ бл®ўҐ© ўҐаиЁл t. ЋЁ аҐ-
Јг«пал, Ё Ї®в®¬г ᮤҐа¦ в ЁЎ®«миЁҐ зЁб« ў бў®Ёе Ї®¤¤ҐаҐўмпе.
’ ЄЁ¬ ®Ўа §®¬, а®«м ЁЎ®«м襣® зЁб« ў t-Ї®¤¤ҐаҐўҐ ¬®Јгв
ЇаҐвҐ¤®ў вм зЁб«® ў б ¬®© ўҐаиЁҐ t Ё зЁб« ў ҐҐ бл®ўмпе. (‚
ЇҐаў®¬ б«гз Ґ ўҐаиЁ t ॣг«па , Ё ўбҐ ў Ї®ап¤ЄҐ.) ‚ нвЁе вҐа-
¬Ё е жЁЄ« ¬®¦® § ЇЁб вм в Є:
while ЁЎ®«м襥 зЁб«® Ґ ў t, ў ®¤®¬ Ё§ бл®ўҐ© do begin
| if ®® ў Їа ў®¬ блҐ then begin
| | Ї®¬Ґпвм t б ҐҐ Їа ўл¬ б뮬; t:= Їа ўл© бл
| end else begin { ЁЎ®«м襥 зЁб«® - ў «Ґў®¬ блҐ}
| | Ї®¬Ґпвм t б ҐҐ «Ґўл¬ б뮬; t:= «Ґўл© бл
| end
end
Џ®б«Ґ ®Ў¬Ґ ўҐаиЁ t бв ®ўЁвбп ॣг«па®© (ў ҐҐ Ї®Ї ¤ Ґв
¬ ЄбЁ¬ «м®Ґ зЁб«® t-Ї®¤¤ҐаҐў ). ЌҐ ЇаЁпўиЁ© гз бвЁп ў ®Ў¬ҐҐ
бл ®бв Ґвбп ॣг«пал¬, ЇаЁпўиЁ© гз бвЁҐ ¬®¦Ґв Ё Ґ Ўлвм аҐ-
Јг«пал¬. ‚ ®бв «мле ўҐаиЁ е s-Ї®¤¤ҐаҐў Ґ Ё§¬ҐЁ«Ёбм Ё зЁб-
« , Ё Ї®¤¤ҐаҐўмп Ёе Ї®в®¬Є®ў (а §ўҐ зв® ¤ў н«Ґ¬Ґв Ї®¤¤ҐаҐў
ЇҐаҐбв ўЁ«Ёбм), в Є з⮠ॣгпа®бвм Ґ агиЁ« бм.
ќв ¦Ґ Їа®жҐ¤га ¬®¦Ґв ЁбЇ®«м§®ў вмбп ¤«п в®Ј®, зв®Ўл ᤥ« вм
1-Ї®¤¤ҐаҐў® ॣг«пал¬ з «м®© бв ¤ЁЁ б®авЁа®ўЄЁ:
k := n;
u := n;
{ўбҐ s-Ї®¤¤ҐаҐўмп б s>u ॣг«пал }
while u<>0 do begin
| {u-Ї®¤¤ҐаҐў® ॣг«па® ўҐ§¤Ґ, Єа®¬Ґ а §ўҐ зв® Є®ап}
| ... ў®ббв ®ўЁвм ॣг«па®бвм u-Ї®¤¤ҐаҐў ў Є®аҐ;
| u:=u-1;
end;
’ҐЇҐам § ЇЁиҐ¬ Їа®жҐ¤гаг б®авЁа®ўЄЁ Ї бЄ «Ґ (ЇаҐ¤Ї®« -
Ј п, зв® n - Є®бв в , x Ё¬ҐҐв вЁЇ arr = array [1..n] of
integer).
procedure sort (var x: arr);
| var u, k: integer;
| procedure exchange(i, j: integer);
| | var tmp: integer;
| | begin
| | tmp := x[i];
| | x[i] := x[j];
| | x[j] := tmp;
| end;
| procedure restore (s: integer);
| | var t: integer;
| | begin
| | t:=s;
| | while ((2*t+1 <= k) and (x[2*t+1] > x[t]) ) or
| | | ((2*t <= k) and (x[2*t] > x[t])) do begin
| | | if (2*t+1 <= k) and (x[2*t+1] >= x[2*t]) then begin
| | | | exchange (t, 2*t+1);
| | | | t := 2*t+1;
| | | end else begin
| | | | exchange (t, 2*t);
| | | | t := 2*t;
| | | end;
| | end;
| end;
begin
| k:=n;
| u:=n;
| while u <> 0 do begin
| | restore (u);
| | u := u - 1;
| end;
| while k <> 1 do begin
| | exchange (1, k);
| | k := k - 1;
| | restore (1);
| end;
end;
ЌҐбЄ®«мЄ® § ¬Ґз Ё©.
ЊҐв®¤, ЁбЇ®«м§®ў л© ЇаЁ б®авЁа®ўЄҐ ¤ҐаҐў®¬, Ўлў Ґв Ї®«Ґ§-
л¬ ў ¤агЈЁе б«гз е. (‘¬. ў Ј« ўҐ 6 (® вЁЇ е ¤ ле) а §¤Ґ« ®Ў
®зҐаҐ¤Ё б ЇаЁ®аЁвҐв ¬Ё.)
‘®авЁа®ўЄ б«ЁпЁҐ¬ е®а®и ⥬, зв® ® вॡгҐв, зв®Ўл
ўҐбм б®авЁагҐ¬л© ¬ ббЁў Ї®¬Ґй «бп ў ®ЇҐа вЁў®© Ї ¬пвЁ. Њ®¦®
б з « ®вб®авЁа®ў вм в ЄЁҐ ЄгбЄЁ, Є®в®алҐ Ї®¬Ґй овбп ў Ї ¬пвЁ
( ЇаЁ¬Ґа, б Ї®¬®ймо ¤ҐаҐў ), § ⥬ б«Ёў вм Ї®«гзҐлҐ д ©«л.
…йҐ ®¤Ё Їа ЄвЁзҐбЄЁ ў ¦л© «Ј®аЁв¬ б®авЁа®ўЄЁ в Є®ў: зв®-
Ўл ®вб®авЁа®ў вм ¬ ббЁў, ўлЎҐаҐ¬ б«гз ©л© ҐЈ® н«Ґ¬Ґв b, Ё а -
§®ЎкҐ¬ ¬ ббЁў ваЁ з бвЁ: ¬ҐмиЁҐ b, а ўлҐ b Ё Ў®«миЁҐ b.
(ќв § ¤ з ЇаЁўҐ¤Ґ ў Ј« ўҐ ® ¬ ббЁў е.) ’ҐЇҐам ®бв «®бм ®в-
б®авЁа®ў вм ЇҐаўго Ё ваҐвмо з бвЁ: нв® ¤Ґ« Ґвбп ⥬ ¦Ґ бЇ®б®Ў®¬.
‚६п а Ў®вл нв®Ј® «Ј®аЁв¬ - б«гз © п ўҐ«ЁзЁ ; ¬®¦® ¤®Є -
§ вм, зв® ў б।Ґ¬ ® а Ў®в Ґв Ґ Ў®«миҐ C*n*log n. Ќ Їа ЄвЁЄҐ
- ® ®¤Ё Ё§ б ¬ле Ўлбвале. (Њл ҐйҐ ўҐаҐ¬бп Є Ґ¬г, ЇаЁўҐ¤п ҐЈ®
४габЁўго Ё ҐаҐЄгабЁўго ॠ«Ё§ жЁЁ.)
Ќ Є®Ґж, ®в¬ҐвЁ¬, зв® б®авЁа®ўЄ § ўаҐ¬п Ї®ап¤Є C*n*log n
¬®¦Ґв Ўлвм ўлЇ®«Ґ б Ї®¬®ймо вҐеЁЄЁ бЎ « бЁа®ў ле ¤ҐаҐўмҐў
(б¬. Ј« ўг 12), ®¤ Є® Їа®Ја ¬¬л вгв б«®¦ҐҐ Ё Є®бв в C ¤®-
ў®«м® ўҐ«ЁЄ .
4.3. ЏаЁ¬ҐҐЁп б®авЁа®ўЄЁ.
4.3.1. Ќ ©вЁ Є®«ЁзҐбвў® а §«Ёзле зЁбҐ« б।Ё н«Ґ¬Ґв®ў
¤ ®Ј® ¬ ббЁў . —Ёб«® ¤Ґ©бвўЁ© Ї®ап¤Є n*log n. (ќв § ¤ з 㦥
Ўл« ў Ј« ўҐ ® ¬ ббЁў е.)
ђҐиҐЁҐ. Ћвб®авЁа®ў вм зЁб« , § ⥬ Ї®бзЁв вм Є®«ЁзҐбвў®
а §«Ёзле, Їа®б¬ ваЁў п н«Ґ¬Ґвл ¬ ббЁў Ї® Ї®ап¤Єг.
4.3.2. „ ® n ®в१Є®ў [a[i], b[i]] Їаאַ© (i=1..n).
Ќ ©вЁ ¬ ЄбЁ¬ «м®Ґ k, ¤«п Є®в®а®Ј® бгйҐбвўгҐв в®зЄ Їаאַ©, Ї®Є-
алв п k ®в१Є ¬Ё ("¬ ЄбЁ¬ «м®Ґ зЁб«® б«®Ґў"). —Ёб«® ¤Ґ©бвўЁ© -
Ї®ап¤Є n*log n.
ђҐиҐЁҐ. “Ї®а冷稬 ўбҐ «ҐўлҐ Ё Їа ўлҐ Є®жл ®в१Є®ў ў¬Ґб-
⥠(ЇаЁ н⮬ «Ґўл© Є®Ґж бзЁв Ґвбп ¬ҐмиҐ Їа ў®Ј® Є®ж , а бЇ®-
«®¦Ґ®Ј® ў в®© ¦Ґ в®зЄҐ Їаאַ©). „ «ҐҐ ¤ўЁЈ Ґ¬бп б«Ґў Їа -
ў®, бзЁв п зЁб«® б«®Ґў. ‚бваҐзҐл© «Ґўл© Є®Ґж 㢥«ЁзЁў Ґв
зЁб«® б«®Ґў 1, Їа ўл© - 㬥ми Ґв. Ћв¬ҐвЁ¬, зв® ЇаЁ¬лЄ ойЁҐ
¤агЈ Є ¤агЈг ®в१ЄЁ ®Ўа Ў влў овбп Їа ўЁ«м®: б з « Ё¤Ґв «Ґ-
ўл© Є®Ґж (Їа ў®Ј® ®в१Є ), § ⥬ - Їа ўл© («Ґў®Ј® ®в१Є ).
4.3.3. „ ® n в®зҐЄ Ї«®бЄ®бвЁ. “Є § вм (n-1)-§ўҐго Ґ-
б ¬®ЇҐаҐбҐЄ ойгобп Ґ§ ¬Єгвго «®¬ го, Їа®е®¤пйго зҐаҐ§ ўбҐ нвЁ
в®зЄЁ. (‘®бҐ¤Ё¬ ®в१Є ¬ «®¬ ®© а §аҐи Ґвбп «Ґ¦ вм ®¤®©
Їаאַ©.) —Ёб«® ¤Ґ©бвўЁ© Ї®ап¤Є n*log n.
ђҐиҐЁҐ. “Ї®а冷稬 в®зЄЁ Ї® x-Є®®а¤Ё вҐ, ЇаЁ а ўле
x-Є®®а¤Ё в е - Ї® y-Є®®а¤Ё вҐ. ‚ в Є®¬ Ї®ап¤ЄҐ Ё ¬®¦® Їа®ў®-
¤Ёвм «®¬ го.
4.3.4. ’ ¦Ґ § ¤ з , Ґб«Ё «®¬ п ¤®«¦ Ўлвм § ¬Єгв®©.
ђҐиҐЁҐ. ‚®§м¬Ґ¬ б ¬го «Ґўго в®зЄг (в.Ґ. в®зЄг б Ё¬Ґм襩
x-Є®®а¤Ё в®©) Ё Їа®ўҐ¤Ґ¬ Ё§ ҐҐ «гзЁ ў® ўбҐ ®бв «млҐ в®зЄЁ.
’ҐЇҐам гЇ®а冷稬 нвЁ «гзЁ, в®зЄЁ ®¤®¬ «гзҐ Ї®¬ҐбвЁ¬ ў Ї®-
ап¤ЄҐ 㢥«ЁзҐЁп а ббв®пЁп ®в з « «гз .
4.3.5. „ ® n в®зҐЄ Ї«®бЄ®бвЁ. Џ®бва®Ёвм Ёе ўлЇгЄ«го
®Ў®«®зЄг - ¬ЁЁ¬ «мго ўлЇгЄ«го дЁЈгаг, Ёе ᮤҐа¦ йго. (”®а¬г
ўлЇгЄ«®© ®Ў®«®зЄЁ ЇаЁ¬Ґв १Ё®ў®Ґ Є®«ҐзЄ®, Ґб«Ё ҐЈ® впгвм
Јў®§¤Ё, ўЎЁвлҐ ў в®зЄ е.) —Ёб«® ®ЇҐа жЁ© Ґ Ў®«ҐҐ n*log n.
“Є § ЁҐ. “Ї®а冷稬 в®зЄЁ - Ј®¤Ёвбп «оЎ®© Ё§ Ї®ап¤Є®ў, Ёб-
Ї®«м§®ў ле ў ¤ўге ЇаҐ¤л¤гйЁе § ¤ з е. ‡ ⥬, а бб¬ ваЁў п в®з-
ЄЁ Ї® ®зҐаҐ¤Ё, Ўг¤Ґ¬ бва®Ёвм ўлЇгЄ«го ®Ў®«®зЄг 㦥 а бᬮваҐле
в®зҐЄ. („«п еа ҐЁп ўлЇгЄ«®© ®Ў®«®зЄЁ Ї®«Ґ§® ЁбЇ®«м§®ў вм ¤ҐЄ,
б¬. Ј« ўг 6 ® вЁЇ е ¤ ле.)
4.4. ЌЁ¦ЁҐ ®жҐЄЁ ¤«п зЁб« ба ўҐЁ© ЇаЁ б®авЁа®ўЄҐ.
Џгбвм Ё¬ҐҐвбп n а §«Ёзле Ї® ўҐбг Є ¬Ґ© Ё ўҐбл, Є®в®алҐ
Ї®§ў®«пов § ®¤® ў§ўҐиЁў ЁҐ ®ЇаҐ¤Ґ«Ёвм, Є Є®© Ё§ ¤ўге ўлЎа -
ле ¬Ё Є ¬Ґ© в殮«ҐҐ. (‚ Їа®Ја ¬¬ЁбвбЄЁе вҐа¬Ё е: ¬л Ё¬ҐҐ¬
¤®бвгЇ Є дгЄжЁЁ в殮«ҐҐ(i,j:1..n):boolean.) Ќ ¤® гЇ®а冷зЁвм
Є ¬Ё Ї® ўҐбг, ᤥ« ў Є Є ¬®¦® ¬ҐмиҐ ў§ўҐиЁў Ё© (ўл§®ў®ў
дгЄжЁЁ "в殮«ҐҐ").
ђ §г¬ҐҐвбп, зЁб«® ў§ўҐиЁў Ё© § ўЁбЁв Ґ в®«мЄ® ®в ўлЎа ®-
Ј® ¬Ё «Ј®аЁв¬ , ® Ё ®в в®Ј®, Є Є ®Є § «Ёбм а бЇ®«®¦Ґл Є ¬-
Ё. ‘«®¦®бвмо «Ј®аЁв¬ §®ўҐ¬ зЁб«® ў§ўҐиЁў Ё© ЇаЁ Ёег¤иҐ¬
а бЇ®«®¦ҐЁЁ Є ¬Ґ©.
4.4.1. „®Є § вм, зв® б«®¦®бвм «оЎ®Ј® «Ј®аЁв¬ б®авЁа®ўЄЁ n
Є ¬Ґ© Ґ ¬ҐмиҐ log (n!). (‹®Ј аЁд¬ ЎҐаҐвбп Ї® ®б®ў Ёо 2, n!
- Їа®Ё§ўҐ¤ҐЁҐ зЁбҐ« 1..n.)
ђҐиҐЁҐ. Џгбвм Ё¬ҐҐвбп «Ј®аЁв¬ б«®¦®бвЁ Ґ Ў®«ҐҐ d. „«п
Є ¦¤®Ј® Ё§ n! ў®§¬®¦ле а бЇ®«®¦ҐЁ© Є ¬Ґ© § Їа®в®Є®«Ёа㥬 аҐ-
§г«мв вл ў§ўҐиЁў Ё© (®Ўа 饨© Є дгЄжЁЁ "в殮«ҐҐ"); Ёе ¬®¦®
§ ЇЁб вм ў ўЁ¤Ґ Ї®б«Ґ¤®ў ⥫м®бвЁ Ё§ Ґ Ў®«ҐҐ 祬 d г«Ґ© Ё
Ґ¤ЁЁж. „«п Ґ¤Ё®®Ўа §Ёп ¤®Ї®«Ё¬ Ї®б«Ґ¤®ў ⥫м®бвм г«п¬Ё,
зв®Ўл ҐҐ ¤«Ё бв « а ў®© d. ’Ґ¬ б ¬л¬ г б Ё¬ҐҐвбп n! Ї®б«Ґ-
¤®ў ⥫м®б⥩ Ё§ d г«Ґ© Ё Ґ¤ЁЁж. ‚ᥠнвЁ Ї®б«Ґ¤®ў ⥫м®бвЁ
а §лҐ - Ё зҐ и «Ј®аЁв¬ ¤ « Ўл ®¤Ё Є®ўлҐ ®вўҐвл ¤«п а §ле
Ї®ап¤Є®ў (Ё ®¤Ё Ё§ ®вўҐв®ў Ўл« Ўл ҐЇа ўЁ«мл¬). Џ®«гз Ґ¬, зв®
2 ў б⥯ҐЁ d Ґ ¬ҐмиҐ n! - зв® Ё вॡ®ў «®бм ¤®Є § вм.
„агЈ®© бЇ®б®Ў ®ЎкпбЁвм в® ¦Ґ б ¬®Ґ - а бᬮваҐвм ¤ҐаҐў®
ў аЁ в®ў, ў®§ЁЄ о饥 ў 室Ґ ўлЇ®«ҐЁп «Ј®аЁв¬ , Ё б®б« вмбп
в®, зв® ¤ҐаҐў® ўлб®вл d Ґ ¬®¦Ґв Ё¬Ґвм Ў®«ҐҐ (2 ў б⥯ҐЁ d)
«Ёбв쥢.
ќв® а бб㦤ҐЁҐ Ї®Є §лў Ґв, зв® «оЎ®© «Ј®аЁв¬ б®авЁа®ўЄЁ,
ЁбЇ®«м§гойЁ© в®«мЄ® ба ўҐЁп н«Ґ¬Ґв®ў ¬ ббЁў Ё Ёе ЇҐаҐбв ®ў-
ЄЁ, вॡгҐв Ґ ¬ҐҐҐ C*n*log n ¤Ґ©бвўЁ©, в Є зв® иЁ «Ј®аЁв¬л
Ў«Ё§ЄЁ Є ®ЇвЁ¬ «мл¬. Ћ¤ Є® «Ј®аЁв¬ б®авЁа®ўЄЁ, ЁбЇ®«м§гойЁ©
¤агЈЁҐ ®ЇҐа жЁЁ, ¬®¦Ґв ¤Ґ©бвў®ў вм Ўлбв॥. ‚®в ®¤Ё Ё§ ЇаЁ¬Ґ-
а®ў.
4.4.2. €¬ҐҐвбп ¬ ббЁў 楫ле зЁбҐ« a[1]..a[n], ЇаЁзҐ¬ ўбҐ
зЁб« Ґ®ваЁж ⥫мл Ё Ґ ЇаҐў®б室пв m. Ћвб®авЁа®ў вм нв®в ¬ б-
бЁў; зЁб«® ¤Ґ©бвўЁ© Ї®ап¤Є m+n.
ђҐиҐЁҐ. „«п Є ¦¤®Ј® зЁб« ®в 0 ¤® m Ї®¤бзЁвлў Ґ¬, бЄ®«мЄ®
а § ®® ўбваҐз Ґвбп ў ¬ ббЁўҐ. Џ®б«Ґ нв®Ј® Ёбе®¤л© ¬ ббЁў ¬®¦®
бвҐаҐвм Ё § Ї®«Ёвм § ®ў® ў Ї®ап¤ЄҐ ў®§а бв Ёп, ЁбЇ®«м§гп ᢥ-
¤ҐЁп ® Єа в®бвЁ Є ¦¤®Ј® зЁб« .
Ћв¬ҐвЁ¬ в Є¦Ґ, зв® нв®в «Ј®аЁв¬ Ґ ЇҐаҐбв ў«пҐв зЁб« ў ¬ ббЁ-
ўҐ, Є Є Ў®«миЁбвў® ¤агЈЁе, "§ ЇЁблў Ґв Ёе вг¤ § ®ў®".
…бвм в Є¦Ґ ¬Ґв®¤ б®авЁа®ўЄЁ, ў Є®в®а®¬ Ї®б«Ґ¤®ў вҐ«м® Їа®ў®¤Ёвбп