ЏђЋѓђЂЊЊ€ђЋ‚ЂЌ€…: ’…Ћђ…Њ› € ‡Ђ„Ђ—€ Ќ…‘ЉЋ‹њЉЋ ‡ЂЊ…—ЂЌ€‰ ‚Њ…‘’Ћ Џђ…„€‘‹Ћ‚€џ ЉЁЈ ЇЁб Ї® ¬ вҐаЁ « ¬ § пвЁ© Їа®Ја ¬¬Ёа®ў ЁҐ¬ б® иЄ®«мЁЄ ¬Ё ¬ ⥬ вЁзҐбЄЁе Є« бб®ў иЄ®«л 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 Ї®¤бзЁвлў Ґ¬, бЄ®«мЄ® а § ®® ўбваҐз Ґвбп ў ¬ ббЁўҐ. Џ®б«Ґ нв®Ј® Ёбе®¤л© ¬ ббЁў ¬®¦® бвҐаҐвм Ё § Ї®«Ёвм § ®ў® ў Ї®ап¤ЄҐ ў®§а бв Ёп, ЁбЇ®«м§гп ᢥ- ¤ҐЁп ® Єа в®бвЁ Є ¦¤®Ј® зЁб« . Ћв¬ҐвЁ¬ в Є¦Ґ, зв® нв®в «Ј®аЁв¬ Ґ ЇҐаҐбв ў«пҐв зЁб« ў ¬ ббЁ- ўҐ, Є Є Ў®«миЁбвў® ¤агЈЁе, "§ ЇЁблў Ґв Ёе вг¤ § ®ў®". …бвм в Є¦Ґ ¬Ґв®¤ б®авЁа®ўЄЁ, ў Є®в®а®¬ Ї®б«Ґ¤®ў вҐ«м® Їа®ў®¤Ёвбп