Скачиваний:
2
Добавлен:
01.05.2014
Размер:
32.61 Кб
Скачать


1 ‡Ђ„Ђ—Ђ.

ђ ббв ўЁвм ­  и е¬ в­®© ¤®бЄҐ а §¬Ґа  N ­  N, N дҐа§Ґ© в Є,
зв®Ўл ­Ё ®¤Ё­ дҐа§м ­Ґ гЈа®¦ « ¤агЈ®¬г.

ЏаЁ¬Ґа:

­®¬Ґа  Ј®аЁ§®­в «Ґ©
і
ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
1 і * і я ія і і і і ія і
ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
2 і і і і і і і * і і
ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
3 і і я ія і і * і і ія і
ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
4 і і і і і і і і * і
ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
5 і і * ія і і і і ія і
ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
6 і і і і * і і і і і
ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
7 і і я ія і і і * і ія і
ГДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДґ
8 і і і * і і і і і і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ
1 2 3 4 5 6 7 8 - ­®¬Ґа  ўҐавЁЄ «Ґ©


2 €„…€ Ђ‹ѓЋђ€’ЊЋ‚.

ђ бᬮв७­лҐ ў а Ў®вҐ аҐиҐ­Ёп ®б­®ў ­­л ­   «Ј®аЁв¬Ґ б ў®§ўа в®¬.

ЋЎй п б奬   «Ј®аЁв¬  Ї®ЁбЄ  ўбҐе ў®§¬®¦­ле аҐиҐ­Ё©:

procedure Queen ( i : integer );
{‘в ўЁ¬ i-Ј® дҐа§п ў i-го ўҐавЁЄ «м}
begin
Ё­ЁжЁЁа®ў вм ўлЎ®а Ї®§ЁжЁЁ ¤«п i-Ј® дҐа§п;
repeat
ўлЎа вм Ї®§ЁжЁо;
if ЎҐ§®Ї б­® then
begin
Ї®бв ўЁвм дҐа§п;
if i < N then Queen ( i+1 )
else § ЇЁб вм аҐиҐ­ЁҐ;
гЎа вм дҐа§п;
end
until ­Ґв Ў®«миҐ Ї®§ЁжЁ©;
end;

ђ §«ЁзЁҐ ¤ўге  «Ј®аЁв¬®ў § Є«оз Ґвбп ў ⮬, Є Є ЇаҐ¤бв ўЁвм ¤ ­­лҐ
® ⮬ Єг¤  ¬®¦­® Ї®бв ўЁвм ®зҐаҐ¤­®Ј® дҐа§п,   Єг¤  ­Ґ«м§п.

Ђ«Ј1
•а ­Ёв ­  Є ¦¤®¬ и ЈҐ ®¤­г Ја ­Ёжг S [1..N] (в.Ґ. дҐа§п ¬®¦­®
Ї®Їлв вмбп Ї®бв ўЁвм ­  Ј®аЁ§®­в «м ®в S ¤® N) Ё Ї®¤­Ё¬ Ґв ҐҐ Ї®Є 
­Ґ Ї®«гзЁв S=N, в®Ј¤  Їа®Ёб室Ёв ў®§ўа в.
‚ н⮬ б«гз Ґ ¤«п в®Ј®, зв®Ўл Їа®ўҐаЁвм ¬®¦­® «Ё Ї®бв ўвм ®зҐаҐ¤­®Ј®
дҐа§п ­г¦­® ўҐа­гвбп Є® ўбҐ¬ 㦥 Ї®бв ў«Ґ­­л¬.

Ђ«Ј2
•а ­Ёв ¬­®¦Ґбвў® ў®§¬®¦­ле Ї®§ЁжЁ© ў пў­®¬ ўЁ¤Ґ ваҐ¬п ¬ ббЁў ¬Ё
H [1..N] § ­пв (false) Ј®аЁ§®­в «м
D1[2..2*N] § ­пв (false) /-¤Ё Ј®­ «м
D2[1-N..N-1] § ­пв (false) \-¤Ё Ј®­ «м
‚ н⮬ б«гз Ґ ЇаўҐаЄ  в®Ј® ¬®¦­® «Ё Ї®бв ўЁвм ­®ў®Ј® дҐа§п ¤®бв в®з­®
Їа®бв .

‡ ¬ҐвЁ¬ зв® б।Ё Ї®«г祭­ле аҐиҐ­Ё© Ґбвм ¬­®Ј® бЁ¬¬ҐваЁз­ле ­ҐЄ®в®алҐ
Ё§ ­Ёе ¬®¦­® ®вбҐзм, Ґб«Ё ­ зЁ­ вм § Ї®«­пвм ЇҐаўго ўҐавЁЄ «м б® ўв®а®©
Ј®аЁ§®­в «Ё Ё в®«мЄ® ¤® бҐаҐ¤Ё­л.

Џђ€Њ…—ЂЌ€…: Ђ«Ј2 а бᬮв७ ў Є­ЁЈҐ Ќ. ‚Ёав 
"Ђ«Ј®аЁв¬л + бвагЄвЄвгал ¤ ­­ле = Їа®Ја ¬¬л"


3 ЉЋЊЊ…Ќ’Ђђ€€ Љ ђЂЃЋ’….

Љ ®взҐвг ЇаЁ« Ј овбп Їа®Ј а¬¬л ­ е®¤пйЁҐбп ў ¤ЁаҐЄв®аЁЁ QUEEN.
Џа®Ја ¬¬л ॠ«Ё§®ў ­­лҐ Ї® Ђ«Ј1 ў QUEEN95.
Џа®Ја ¬¬л ॠ«Ё§®ў ­­лҐ Ї® Ђ«Ј2 ў QUEEN99.
‚ Є ¦¤®¬ Ё§ нвЁе ¤ЁаҐЄв®аЁҐў ­ е®¤пвбп Їа®Ја ¬¬л б гзҐв®¬ ­ҐЄ®в®але
бЁ¬¬ҐваЁз­ле аҐиҐ­Ё© (QUEEN) Ё ЎҐ§ (QUEEN1).
‚ ¤ЁаҐЄв®аЁпе Ї®¤ ­ §ў ­ЁҐ¬ MONTECAR ­ е®¤пвбп Їа®Ја ¬¬л ®жҐ­Ёў ойЁҐ
Є®«ЁзҐбвў® ў аЁ ­в®ў ЇҐаҐЎЁа Ґ¬ле ᮮ⢥вбвўгойЁ¬  «Ј®аЁв¬®¬.
ђ Ў®в  ўбҐе Їа®Ја ¬¬ ®жҐ­Ёў « бм Ї® ўаҐ¬Ґ­Ё १г«мв вл ®жҐ­®Є
еа ­пвбп ў д ©« е б а биЁаҐ­ЁҐ¬ (tab).
‚ аЁ ­вл аҐиҐ­Ё© ¤«п 8<=N<=14 еа ­пвбп ў д ©« е б а биЁаҐ­ЁҐ¬ (dat).

4 ’ЂЃ‹€–› ђ…‡“‹њ’Ђ’Ћ‚ € ђ……Ќ€џ.

4.1 ’ЂЃ‹€–› ‘ђЂ‚Ќ…Ќ€џ ђ…‡“‹њ’Ђ’Ћ‚ ђЂЃЋ’› ЏђЋѓђЂЊЊ
ЌЂЏ€‘ЂЌЌ›• ЏЋ Ђ«Ј1 Ё Ђ«Ј2.

ђҐ§г«мв вл вҐбвЁа®ў ­Ёп Їа®Ја ¬¬л queen.pas Ё§ ...\QUEEN\QUEEN95\QUEEN\...
Ё ...QUEEN\QUEEN99\QUEEN\... ᮮ⢥вб⢥­­®.

Є®«ЁзҐбвў® дҐа§Ґ© -я n
Є®«ЁзҐбвў® 㧫®ў ў ¤ҐаҐўҐ Ї®ЁбЄ  - яN
Є®«ЁзҐбвў® ­ ©¤Ґ­ле аҐиҐ­Ё© -я nS

ўаҐ¬п аҐиҐ­Ёп - яT Ё T1 ᮮ⢥вᢥ­­®
...\QUEEN\QUEEN95\QUEEN\... Ё ...QUEEN\QUEEN99\QUEEN\...
( б гзҐв®¬ бЁ¬¬ҐваЁЁ ­ҐЄ®в®але аҐиҐ­Ё© )
ЪДДДВДДДДДДДВДДДДДДДДДДВДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДї
і n і яnS я ія N ія T і T1 і
ГДДДЕДДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДґ
і 8 і 42і 801і 0 ¬Ё­ 0.06 ᥪі 0 ¬Ё­ 0.00 ᥪі
і і і і і і
і 9 і 121і 2 857і 0 ¬Ё­ 0.16 ᥪі 0 ¬Ё­ 0.06 ᥪі
і і і і і і
і10 і 298і 14 566і 0 ¬Ё­ 0.71 ᥪі 0 ¬Ё­ 0.11 ᥪі
і і і і і і
і11 і 1 069і 62 284і 0 ¬Ё­ 3.63 ᥪі 0 ¬Ё­ 0.50 ᥪі
і і і і і і
і12 і 6 600і 367 016і 0 ¬Ё­ 24.93 ᥪі 0 ¬Ё­ 2.91 ᥪі
і і і яі і і
і13 і 30 061і 1 840 253і 2 ¬Ё­ 20.17 ᥪі 0 ¬Ё­ 14.94 ᥪі
і і і і і і
і14 і170 906і12 075 381і - ія1 ¬Ё­ 39.47 ᥪі
і і і і ія і
АДДДБДДДДДДДБДДДДДДДДДДБДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДЩ

ђҐ§г«мв вл вҐбвЁа®ў ­Ёп Їа®Ја ¬¬л queen1.pas Ё§ ...\QUEEN\QUEEN95\QUEEN1\...
Ё ...QUEEN\QUEEN99\QUEEN1\... ᮮ⢥вб⢥­­®.

Є®«ЁзҐбвў® дҐа§Ґ© -я n
Є®«ЁзҐбвў® 㧫®ў ў ¤ҐаҐўҐ Ї®ЁбЄ  - яN
Є®«ЁзҐбвў® ­ ©¤Ґ­ле аҐиҐ­Ё© -я nS

ўаҐ¬п аҐиҐ­Ёп - яT Ё T1 ᮮ⢥вᢥ­­®
...\QUEEN\QUEEN95\QUEEN1\... Ё ...QUEEN\QUEEN99\QUEEN1\...
( ўбҐ аҐиҐ­Ёп )
ЪДДДВДДДДДДДВДДДДДДДДДДВДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
і n і яnS я ія N ія T і T1 і
ГДДДЕДДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДґ
і 8 і 92і 2 056і 0 ¬Ё­ 0.11 ᥪі0 ¬Ё­ 0.06 ᥪі
і і і і і і
і 9 і 352і 8 393і 0 ¬Ё­ 0.38 ᥪі0 ¬Ё­ 0.11 ᥪі
і і і і і і
і10 і 724і 35 538і 0 ¬Ё­ 1.75 ᥪі0 ¬Ё­ 0.28 ᥪі
і і і і і і
і11 і 2 680і 166 925і 0 ¬Ё­ 9.45 ᥪі0 ¬Ё­ 1.21 ᥪі
і і і і і і
і12 і 14 200і 856 188і 0 ¬Ё­ 56.51 ᥪі0 ¬Ё­ 6.59 ᥪі
і і і яі і і
і13 і 73 712і 4 674 889і 5 ¬Ё­ 54.49 ᥪі0 ¬Ё­ 38.45 ᥪі
і і і і і і
і14 і365 596і27 358 552і - і3 ¬Ё­ 40.91 ᥪі
і і і і і і
АДДДБДДДДДДДБДДДДДДДДДДБДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ


я 4.2 ђ…‡“‹њ’Ђ’› ‘—…’Ђ € Ћ–…ЌЉ€ Њ…’Ћ„ЋЊ ЊЋЌ’…-ЉЂђ‹Ћ

Є®«ЁзҐбвў® дҐа§Ґ© -я n
Є®«ЁзҐбвў® 㧫®ў ў ¤ҐаҐўҐ Ї®ЁбЄ  - яN
Є®«ЁзҐбвў® ­ ©¤Ґ­ле аҐиҐ­Ё© -я nS
ўаҐ¬п аҐиҐ­Ёп - яT
Є®«ЁзҐбвў® ЁбЇлв ­Ё© - яnExp
®жҐ­Є  Є®«ЁзҐбвў  㧫®ў ў ¤ҐаҐўҐ Ї®ЁбЄ  -я N^
ўаҐ¬п а Ў®вл Їа®Ја ¬¬л ®жҐ­ЄЁ - яt

’ҐбвЁа®ў «Ёбм ЇаЈа ¬¬л ...\QUEEN\QUEEN95\QUEEN\...
ЪДДДВДДДДДДДВДДДДДДДДДДВДДДДДДДДДДДДДДДДВДДДДДДДДДДДВДДДДДДВДДДДДДДДДї
і n і яnS я ія N ія T і N^ і nExp і t я і
ГДДДЕДДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДДДДДДДЕДДДДДДДДДДДЕДДДДДДЕДДДДДДДДДґ
і 8 і 42і 801і 0 ¬Ё­ 0.06 ᥪі 812і 1000 і 0.17 ᥪі
і і і і і і і і
і 9 і 121і 2 857і 0 ¬Ё­ 0.16 ᥪі 2 899і 1000 і 0.22 ᥪі
і і і і і і і і
і10 і 298і 14 566і 0 ¬Ё­ 0.71 ᥪі 14 632і 1000 і 0.22 ᥪі
і і і і і і і і
і11 і 1 069і 62 284і 0 ¬Ё­ 3.63 ᥪі 60 549і 1000 і 0.33 ᥪі
і і і і і і і і
і12 і 6 600і 367 016і 0 ¬Ё­ 24.93 ᥪі 377 011і 1000 і 0.44 ᥪі
і і і яі і і і і
і13 і 30 061і 1 840 253і 2 ¬Ё­ 20.17 ᥪі 1 872 805і 1000 і 0.49 ᥪі
і і і і і і і і
і14 і - і - і - ія11 814 047і 1000 і 0.54 ᥪі
і і і і ія і і і
і15 і - і - і - і 68 186 811і 1000 і 0.66 ᥪі
і і і і і і і і
АДДДБДДДДДДДБДДДДДДДДДДБДДДДДДДДДДДДДДДДБДДДДДДДДДДДБДДДДДДБДДДДДДДДДЩ

’ҐбвЁа®ў «Ёбм Їа®Ја ¬¬л ...\QUEEN\QUEEN95\QUEEN1\...
ЪДДДВДДДДДДДВДДДДДДДДДДВДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДВДДДДДДВДДДДДДДДДї
і n і яnS я ія N ія T і N^ і nExp і t я і
ГДДДЕДДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДЕДДДДДДЕДДДДДДДДДґ
і 8 і 92і 2 056і 0 ¬Ё­ 0.11 ᥪія 2 038і 1000 і 0.17 ᥪі
і і і і ія і і і
і 9 і 352і 8 393і 0 ¬Ё­ 0.38 ᥪія 8 312і 1000 і 0.22 ᥪі
і і і і ія і і і
і10 і 724і 35 538і 0 ¬Ё­ 1.75 ᥪія 37 881і 1000 і 0.27 ᥪі
і і і і ія і і і
і11 і 2 680і 166 925і 0 ¬Ё­ 9.45 ᥪія 161 948і 1000 і 0.33 ᥪі
і і і і ія і і і
і12 і 14 200і 856 188і 0 ¬Ё­ 56.51 ᥪія 849 387і 1000 і 0.38 ᥪі
і і і яі ія і і і
і13 і 73 712і 4 674 889і 5 ¬Ё­ 54.49 ᥪія 4 671 732і 1000 і 0.49 ᥪі
і і і і ія і і і
і14 і - і - і - і я28 439 200і 1000 і 0.60 ᥪі
і і і і ія і і і
і15 і - і - і - і 172 600 442і 1000 і 0.71 ᥪі
і і і і ія і і і
АДДДБДДДДДДДБДДДДДДДДДДБДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДБДДДДДДБДДДДДДДДДЩ

’ҐбвЁа®ў «Ёбм Їа®Ја ¬¬л ...\QUEEN\QUEEN99\QUEEN1\...
ЪДДДВДДДДДДДВДДДДДДДДДДВДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДВДДДДДДДВДДДДДДДДДї
і n і яnS я ія N ія T і N^ і nExp і t я і
ГДДДЕДДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДЕДДДДДДДЕДДДДДДДДДґ
і 8 і 92і 2 056і 0 ¬Ё­ 0.06 ᥪія 2 040і 10000 і 0.83 ᥪі
і і і і ія і і і
і 9 і 352і 8 393і 0 ¬Ё­ 0.11 ᥪія 8 376і 10000 і 0.99 ᥪі
і і і і ія і і і
і10 і 724і 35 538і 0 ¬Ё­ 0.28 ᥪія 35 421і 10000 і 1.16 ᥪі
і і і і ія і і і
і11 і 2 680і 166 925і 0 ¬Ё­ 1.21 ᥪія 166 431і 10000 і 1.32 ᥪі
і і і і ія і і і
і12 і 14 200і 856 188і 0 ¬Ё­ 6.59 ᥪія 849 257і 10000 і 1.49 ᥪі
і і і яі ія і і і
і13 і 73 712і 4 674 889і 0 ¬Ё­ 38.45 ᥪія 4 605 375і 10000 і 1.71 ᥪі
і і і і ія і і і
і14 і365 596і27 358 552і 3 ¬Ё­ 40.91 ᥪі я27 282 972і 10000 і 1.92 ᥪі
і і і і ія і і і
і15 і - і - і - і 170 106 627і 10000 і 2.09 ᥪі
і і і і ія і і і
і16 і - і - і - і1 163 698 634і 10000 і 2.36 ᥪі
і і і і ія і і і
АДДДБДДДДДДДБДДДДДДДДДДБДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДБДДДДДДДБДДДДДДДДДЩ

Џа®Ја ¬¬л вҐбвЁа®ў « бм ­  486\dx100.

4.3 ‚Ђђ€ЂЌ’› ђ……Ќ€‰.

Є®«ЁзҐбвў® дҐа§Ґ© = 8
а Ґ и Ґ ­ Ё п :
1: 1 5 8 6 3 7 2 4
------------------------------
92: 8 4 1 3 6 2 7 5

Є®«ЁзҐбвў® дҐа§Ґ© = 9
а Ґ и Ґ ­ Ё п :
1: 1 3 6 8 2 4 9 7 5
---------------------------------
352: 9 7 4 2 8 6 1 3 5
Є®«ЁзҐбвў® дҐа§Ґ© = 10
а Ґ и Ґ ­ Ё п :
1: 1 3 6 8 10 5 9 2 4 7
-----------------------------------
724: 10 8 5 3 1 6 2 9 7 4

Є®«ЁзҐбвў® дҐа§Ґ© = 11
а Ґ и Ґ ­ Ё п :
1: 1 3 5 7 9 11 2 4 6 8 10
-------------------------------------------
2680: 11 9 7 5 3 1 10 8 6 4 2

Є®«ЁзҐбвў® дҐа§Ґ© = 12
а Ґ и Ґ ­ Ё п :
1: 1 3 5 8 10 12 6 11 2 7 9 4
------------------------------------------
14200: 12 10 8 5 3 1 7 2 11 6 4 9

Є®«ЁзҐбвў® дҐа§Ґ© = 13
а Ґ и Ґ ­ Ё п :
1: 1 3 5 2 9 12 10 13 4 6 8 11 7
----------------------------------------------
73712: 13 11 9 12 5 2 4 1 10 8 6 3 7

Є®«ЁзҐбвў® дҐа§Ґ© = 14
а Ґ и Ґ ­ Ё п :
1: 1 3 5 7 12 10 13 4 14 9 2 6 8 11
--------------------------------------------------
365596: 14 12 10 8 3 5 2 11 1 6 13 9 7 4

Џђ€Њ…—ЂЌ€…: ў а Ў®вҐ ЁбЇ®«м§ ў « бм Ј®в®ўлҐ Їа®Ја ¬¬л Є®в®алҐ
­ е®¤пвбп ў ...\QUEEN\QUEEN95\QUEEN\....

5.ЏђЋѓђЂЊЊ›.

{===========================================================================}
Џа®жҐ¤гал Ё§¬ҐаҐ­Ёп ўаҐ¬Ґ­Ё ®ЎйЁҐ ¤«п ўбҐе Їа®Ја ¬¬.

procedure MyGetTime ( var t : LongInt );
{ўл¤ Ґв ўаҐ¬п ў б®вле ¤®«пе ᥪ㭤л}
var h, m, s , hund : Word;
begin
GetTime( h, m , s, hund);
t := s + 60 * m;
t := hund + 100 * t
end { MyGetTime };

procedure MyUnPackTime ( t: LongInt; var m, s, hund : Word );
{ЇҐаҐў®¤Ёв ўаҐ¬п t (ў б®вле ¤®«пе ᥪ㭤л)
ў ¬Ё­гвл m, ᥪ㭤л s, б®влҐ hund }
begin
hund := t mod 100;
t := t div 100; {ў ᥪ㭠е}
s := t mod 60;
m := t div 60
end { MyUnPackTime };
{==========================================================================}
QUEEN.PAS Ђ«Ј1
{Џа®Ја ¬¬  ®вᥨў ой п ­ҐЄ®в®алҐ ў аЁ ­вл бЁ¬¬ҐваЁз­ле аҐиҐ­Ё©.}

program queen_;
Uses Dos;

const maxN = 20;
type Nat = 1..maxN;
var n : Nat;
fout : Text;
t, t1,t2 : LongInt;
min, sec, s100 : Word;

procedure Queen( n : Nat );

type Nat0 = 0..maxN;
Nat1 = 1..maxN+1;
pos = array [Nat] of Nat1;
var k : Nat0;
i : Nat;
a, s : pos; { s[k] - ­ Ё¬Ґ­миЁ© н«Ґ¬Ґ­в ¬­®¦Ґбвў  Sk }
{ ­Ґ®Їа®Ў®ў ­­ле (¤®ЇгбвЁ¬ле) §­ зҐ­Ё© }
count : Longint; { бзҐвзЁЄ ®Ўб«Ґ¤®ў ­­ле 㧫®ў ¤ҐаҐў  Ї®ЁбЄ }
countS : Longint; { бзҐвзЁЄ ­ ©¤Ґ­ле аҐиҐ­Ё© }
n_div_2 : Nat0;

function NoQueen : Boolean;
{ NoQueen = 'дҐа§м ­Ґ ¬®¦Ґв Ўлвм Ї®бв ў«Ґ­ ў бва®Єг s[k] бв®«Ўж  k' }
var Flag : Boolean;
i : Nat;
begin {NoQueen}
Flag := True;
i := 1;
while (i<k) and Flag do
begin { Flag='дҐа§Ё [1..i) ­Ґ  в Єгов Ї®«Ґ <k,s[k]>'}
{  в ЄгҐв «Ё дҐа§м Ё§ i-Ј® бв®«Ўж  Ї®«Ґ <k,s[k]>?}
Flag := not ( (a[i]=s[k]) or (abs(a[i]-s[k])=k-i) );
i := i+1
end {while};
NoQueen := not Flag
end {NoQueen};

procedure RestSk;
{ ­ ©вЁ б«Ґ¤го饥 ­ Ё¬Ґ­м襥 §­ зҐ­ЁҐ s[k],
­ зЁ­ п б ⥪г饣® s[k]; Ґб«Ё в Є®ў®Ј® ­Ґв, в® s[k]=n+1 }
begin
while (s[k]<=n) and NoQueen do s[k] := s[k] + 1
end {RestSk};

begin{Queen}
a[1] := 2; s[1] := 3;
k := 2; s[2] := 4;
count := 1; countS := 0; n_div_2 := n div 2;

while k>0 do
begin
while (k>1) and (s[k]<=n) or (k=1) and (s[1]<=(n_div_2)) do
begin
a[k] := s[k];
s[k] := s[k] + 1;
RestSk;
count := count + 1;
if k=n then
begin { аҐиҐ­ЁҐ ­ ©¤Ґ­® }
countS := countS + 1; Write(fout,countS:5,' :: ');
for i:=1 to n do Write(fout, a[i]:3); WriteLn(fout)
end { дЁЄб жЁЁ аҐиҐ­Ёп }
else
begin { ЇҐаҐе®¤ Є б«Ґ¤го饩 ўҐавЁЄ «Ё }
k := k + 1;
s[k] := 1;
RestSk
end {if}
end {while};
k := k-1 {backtrack}
end {while};
WriteLn(fout,'ўбҐЈ® ўҐаиЁ­ = ',count)
end {Queen};


begin
WriteLn(' n=?'); ReadLn(n);
Assign(fout,'QOUT.DAT');
Rewrite{Append}(fout);
WriteLn(fout,'Є®«ЁзҐбвў® дҐа§Ґ© = ',n:2);
WriteLn(fout,'а Ґ и Ґ ­ Ё п :');
MyGetTime(t1);

Queen ( n );

MyGetTime(t2);
t := t2 - t1; MyUnPackTime( t, min, sec, s100);
if(s100<10)
then WriteLn(fout,'ўаҐ¬п = ', min,' ¬Ё­ ', sec,'.0', s100,' ᥪ')
else WriteLn(fout,'ўаҐ¬п = ', min,' ¬Ё­ ', sec,'.', s100,' ᥪ');
Close (fout)
end.

{===========================================================================}
QUEEN1.PAS Ђ«Ј1
{ Ї®ЁбЄ ўбҐе аҐиҐ­Ё© }

program queen_;
Uses Dos;

const maxN = 20;
type Nat = 1..maxN;
var n : Nat;
fout : Text;
t, t1,t2 : LongInt;
min, sec, s100 : Word;

procedure Queen( n : Nat );

type Nat0 = 0..maxN;
Nat1 = 1..maxN+1;
pos = array [Nat] of Nat1;
var k : Nat0;
i : Nat;
a, s : pos; { s[k] - ­ Ё¬Ґ­миЁ© н«Ґ¬Ґ­в ¬­®¦Ґбвў  Sk }
{ ­Ґ®Їа®Ў®ў ­­ле (¤®ЇгбвЁ¬ле) §­ зҐ­Ё© }
count : Longint; { бзҐвзЁЄ ®Ўб«Ґ¤®ў ­­ле 㧫®ў ¤ҐаҐў  Ї®ЁбЄ }
countS : Longint; { бзҐвзЁЄ ­ ©¤Ґ­ле аҐиҐ­Ё© }

function NoQueen : Boolean;
{ NoFerz = 'дҐа§м ­Ґ ¬®¦Ґв Ўлвм Ї®бв ў«Ґ­ ў бва®Єг s[k] бв®«Ўж  k' }
var Flag : Boolean;
i : Nat;
begin {NoFerz}
Flag := True;
i := 1;
while (i<k) and Flag do
begin { Flag='дҐа§Ё [1..i) ­Ґ  в Єгов Ї®«Ґ <k,s[k]>'}
{  в ЄгҐв «Ё дҐа§м Ё§ i-Ј® бв®«Ўж  Ї®«Ґ <k,s[k]>?}
Flag := not ( (a[i]=s[k]) or (abs(a[i]-s[k])=k-i) );
i := i+1
end {while};
NoQueen := not Flag
end {NoQueen};

procedure RestSk;
{ ­ ©вЁ б«Ґ¤го饥 ­ Ё¬Ґ­м襥 §­ зҐ­ЁҐ s[k],
­ зЁ­ п б ⥪г饣® s[k]; Ґб«Ё в Є®ў®Ј® ­Ґв, в® s[k]=n+1 }
begin
while (s[k]<=n) and NoQueen do s[k] := s[k] + 1
end {RestSk};

begin{queen}
a[1] := 1; s[1] := 1;
k := 1;
count :=0; countS := 0;

while k>0 do
begin
while (k>=1) and (s[k]<=n) do
begin
a[k] := s[k];
s[k] := s[k] + 1;
RestSk;
count := count + 1;
if k=n then
begin { аҐиҐ­ЁҐ ­ ©¤Ґ­® }
countS := countS + 1; Write(fout,countS:7,' :: ');
for i:=1 to n do Write(fout, a[i]:3); WriteLn(fout)
end { дЁЄб жЁЁ аҐиҐ­Ёп }
else
begin { ЇҐаҐе®¤ Є б«Ґ¤го饩 ўҐавЁЄ «Ё }
k := k + 1;
s[k] := 1;
RestSk
end {if}
end {while};
k := k-1 {backtrack}
end {while};
WriteLn(fout,'ўбҐЈ® ўҐаиЁ­ = ',count)
end {Queen};

begin
WriteLn(' n=?'); ReadLn(n);
Assign(fout,'QOUT.DAT');
Rewrite{Append}(fout);
WriteLn(fout,'Є®«ЁзҐбвў® дҐа§Ґ© = ',n:2);
WriteLn(fout,'а Ґ и Ґ ­ Ё п :');
MyGetTime(t1);

Queen ( n );

MyGetTime(t2);
t := t2 - t1; MyUnPackTime( t, min, sec, s100);
if(s100<10)
then WriteLn(fout,'ўаҐ¬п = ', min,' ¬Ё­ ', sec,'.0', s100,' ᥪ')
else WriteLn(fout,'ўаҐ¬п = ', min,' ¬Ё­ ', sec,'.', s100,' ᥪ');
Close (fout)
end.
{===========================================================================}
QUEEN.PAS Ђ«Ј2
{Џа®Ја ¬¬  ®вᥨў ой п ­ҐЄ®в®алҐ ў аЁ ­вл бЁ¬¬ҐваЁз­ле аҐиҐ­Ё©.}

Uses Dos,crt;

const MaxN=15;
type Nat=1..MaxN;
var
H:array[1..MaxN] of boolean; { § ­пв (false) Ј®аЁ§®­в «м }
D1:array[2..2*MaxN] of boolean; { § ­пв (false) /-¤Ё Ј®­ «м }
D2:array[1-MaxN..MaxN-1] of boolean;{ § ­пв (false) \-¤Ё Ј®­ «м }

N:Nat; { а §¬Ґа ¤®бЄЁ(Є®«ЁзҐбвў® дҐа§Ґ©) }
X:array[1..MaxN] of Nat; { аҐиҐ­ЁҐ }

fout:text; {ўл室­®© д ©«}

{--------------------------------------------------------------------------}
t, t1,t2 : LongInt;
min, sec, s100 : Word;

countS, { Є®«ЁзҐбвў® аҐиҐ­Ё©(ЎҐ§ гзҐв  бЁ¬¬ҐваЁЁ) }
count:Longint;{ Є®«ЁзҐбвў® ўҐаиЁ­ ў ¤ҐаҐўҐ }
n_div_2,j:integer;
{--------------------------------------------------------------------------}

procedure print;
{ ўлў®¤ аҐиҐ­Ёп ў д ©«}
var k:Nat;
begin
countS:=countS+1;
write(fout,countS:8,':');
for k:=1 to N do write(fout,X[k]:3);
writeln(fout);
end{ print };

procedure Queen(i:Nat);
{ ­ е®¤Ёв ўбҐ ў®§¬®¦­лҐ аҐиҐ­Ёп § ¤ зЁ (ЎҐ§ гзҐв  бЁ¬¬ҐваЁЁ) }
var j:Nat;
begin
for j:=1 to N do
if H[j] and D1[i+j] and D2[i-j] then { ¬®¦­® Ї®бв ўЁвм }
begin
X[i]:=j; count:=count+1;
H[j]:=false; D1[i+j]:=false; D2[i-j]:=false; { бв ўЁ¬ }
if i<N then Queen(i+1)
else print;
H[j]:=true; D1[i+j]:=true; D2[i-j]:=true; { гЎЁа Ґ¬ }
end;
end{ Ferz };

procedure Mass;
{ Ё§­ з «м­® ¬ ббЁўл Їгбвл(­Ґв § ­пвле Ї®§ЁжЁ©) }
var i:integer;
begin
for i:=1 to N do H[i]:=true;
for i:=2 to 2*N do D1[i]:=true;
for i:=1-N to N-1 do D2[i]:=true;
end{ Mass };

begin
clrscr;
Write('‚ўҐ¤ЁвҐ а §¬Ґал ¤®бЄЁ (N):'); ReadLn(n);
Assign(fout,'QOut___.DAT');
Rewrite(fout);
WriteLn(fout,'Є®«ЁзҐбвў® дҐа§Ґ© = ',n:2);
WriteLn(fout,'а Ґ и Ґ ­ Ё п :');
MyGetTime(t1);

count:=0; countS:=0; Mass;

n_div_2:=(n div 2);
for j:=2 to n_div_2 do
begin
X[1]:=j; count:=count+1;
H[j]:=false; D1[1+j]:=false; D2[1-j]:=false;
Queen(2);
H[j]:=true; D1[1+j]:=true; D2[1-j]:=true;
end;

MyGetTime(t2);
t := t2 - t1; MyUnPackTime( t, min, sec, s100);
Writeln(fout,' ўбҐЈ® ўҐаиЁ­ = ',count);
if(s100<10)
then Write(fout,'ўаҐ¬п = ', min,' ¬Ё­ ', sec,'.0', s100,' ᥪ')
else Write(fout,'ўаҐ¬п = ', min,' ¬Ё­ ', sec,'.', s100,' ᥪ');
Close (fout)
end.
{===========================================================================}
QUEEN1.PAS Ђ«Ј2
{ Ї®ЁбЄ ўбҐе аҐиҐ­Ё© }

Uses Dos,crt;

const MaxN=15;
type Nat=1..MaxN;
var
H:array[1..MaxN] of boolean; { § ­пв (false) Ј®аЁ§®­в «м }
D1:array[2..2*MaxN] of boolean; { § ­пв (false) /-¤Ё Ј®­ «м }
D2:array[1-MaxN..MaxN-1] of boolean;{ § ­пв (false) \-¤Ё Ј®­ «м }

N:Nat; { а §¬Ґа ¤®бЄЁ(Є®«ЁзҐбвў® дҐа§Ґ©) }
X:array[1..MaxN] of Nat; { аҐиҐ­ЁҐ }

fout:text; {ўл室­®© д ©«}

{--------------------------------------------------------------------------}
t, t1,t2 : LongInt;
min, sec, s100 : Word;

countS, { Є®«ЁзҐбвў® аҐиҐ­Ё©(ЎҐ§ гзҐв  бЁ¬¬ҐваЁЁ) }
count:Longint;{ Є®«ЁзҐбвў® ўҐаиЁ­ ў ¤ҐаҐўҐ }
{--------------------------------------------------------------------------}


procedure print;
{ ўлў®¤ аҐиҐ­Ёп ў д ©«}
var k:Nat;
begin
countS:=countS+1;
write(fout,countS:8,':');
for k:=1 to N do write(fout,X[k]:3);
writeln(fout);
end{ print };

procedure Queen(i:Nat);
{ ­ е®¤Ёв ўбҐ ў®§¬®¦­лҐ аҐиҐ­Ёп § ¤ зЁ (ЎҐ§ гзҐв  бЁ¬¬ҐваЁЁ) }
var j:Nat;
begin
for j:=1 to N do
if H[j] and D1[i+j] and D2[i-j] then { ¬®¦­® Ї®бв ўЁвм }
begin
X[i]:=j; count:=count+1;
H[j]:=false; D1[i+j]:=false; D2[i-j]:=false; { бв ўЁ¬ }
if i<N then Queen(i+1)
else print;
H[j]:=true; D1[i+j]:=true; D2[i-j]:=true; { гЎЁа Ґ¬ }
end;
end{ Ferz };

procedure Mass;
{ Ё§­ з «м­® ¬ ббЁўл Їгбвл(­Ґв § ­пвле Ї®§ЁжЁ©) }
var i:integer;
begin
for i:=1 to N do H[i]:=true;
for i:=2 to 2*N do D1[i]:=true;
for i:=1-N to N-1 do D2[i]:=true;
end{ Mass };

begin
clrscr;
Write('‚ўҐ¤ЁвҐ а §¬Ґал ¤®бЄЁ (N):'); ReadLn(n);
Assign(fout,'QOut.DAT');
Rewrite(fout);
WriteLn(fout,'Є®«ЁзҐбвў® дҐа§Ґ© = ',n:2);
WriteLn(fout,'а Ґ и Ґ ­ Ё п :');
MyGetTime(t1);

count:=0; countS:=0; Mass;
Queen(1);

MyGetTime(t2);
t := t2 - t1; MyUnPackTime( t, min, sec, s100);
Writeln(fout,' ўбҐЈ® ўҐаиЁ­ = ',count);
if(s100<10)
then Write(fout,'ўаҐ¬п = ', min,' ¬Ё­ ', sec,'.0', s100,' ᥪ')
else Write(fout,'ўаҐ¬п = ', min,' ¬Ё­ ', sec,'.', s100,' ᥪ');
Close (fout)
end.
{===========================================================================}
MONTECAR.PAS Ђ«Ј1
{Џа®Ја ¬¬  ®вᥨў ой п ­ҐЄ®в®алҐ ў аЁ ­вл бЁ¬¬ҐваЁз­ле аҐиҐ­Ё©.}

program Monte_Carlo;
Uses Crt, Dos;
const maxN = 20;
type Nat = 1..maxN;
Nat0 = 0..maxN;
pos = array[Nat] of Nat;
var n : Nat;
nExp : integer;
v : Double;
fout : Text;
t, t1,t2 : LongInt;
min, sec, s100 : Word;

procedure MonteCarlo ( nExp : integer; n : Nat; var v: Double );
var k : Nat0;
m_k, num : Nat0;
i : Nat;
iExp : Word;
a, S_k : pos;
n_div_2 : Nat0;
all, sum, prod : Double;
function NoQueen ( k: Nat; s: Nat) : Boolean;
{ NoFerz = 'дҐа§м ­Ґ ¬®¦Ґв Ўлвм Ї®бв ў«Ґ­ ў бва®Єг s бв®«Ўж  k' }
{ ¬ ббЁў a[*] - ў­Ґи­Ё© }
var Flag : Boolean;
i : Nat;
begin {NoQueen}
Flag := True;
i := 1;
while (i<k) and Flag do
begin { Flag='дҐа§Ё [1..i) ­Ґ  в Єгов Ї®«Ґ <k,s>'}
{  в ЄгҐв «Ё дҐа§м Ё§ i-Ј® бв®«Ўж  Ї®«Ґ <k,s>?}
Flag := not ( (a[i]=s) or (abs(a[i]-s)=k-i) );
i := i+1
end {while};
NoQueen := not Flag
end {NoQueen};

procedure FormSk ( k: Nat; var m_k: Nat0; var S_k: pos );
{ д®а¬ЁагҐв "¬­®¦Ґбвў®" (ўҐЄв®а) S_k ў®§¬®¦­ле 室®ў Ё
ҐЈ® ¬®й­®бвм m_k; Ґб«Ё S_k Їгбв®, в® m_k=0 }
var s: Nat;
begin
m_k := 0;
for s:=1 to n do
if not NoQueen( k, s) then
begin { ¬®¦­® бв ўЁвм }
m_k := m_k + 1;
S_k[m_k] := s
end;
end {FormSk};

begin { MonteCarlo }
Randomize;
n_div_2 := n div 2;
all := 0;
for iExp:=1 to nExp do
begin { ®зҐаҐ¤­®Ґ ЁбЇлв ­ЁҐ }
m_k := n_div_2 - 1;
num := Random ( m_k ) + 1;
a[1] := 1+num;
k := 2;
prod := m_k;
sum := prod;
FormSk ( k, m_k, S_k );

while m_k<>0 do
begin
prod := prod*m_k;
sum := sum + prod;
num := Random ( m_k ) + 1;
a[k] := S_k[num];
k := k + 1;
FormSk ( k, m_k, S_k );
end {while};

all := all + sum
end {for};
v := all/nExp
end { MonteCarlo };

begin
WriteLn(' n = ?'); ReadLn(n);
WriteLn(' nExp = ?'); ReadLn(nExp);
Assign(fout,'MONTEC.DAT');
Rewrite{Append}(fout);
WriteLn(fout,'Є®«ЁзҐбвў® дҐа§Ґ© = ',n:2);
WriteLn(fout,'Є®«ЁзҐбвў® ЁбЇлв ­Ё© = ',nExp:2);

MyGetTime(t1);

MonteCarlo ( nExp, n, v );

MyGetTime(t2);
WriteLn(fout,'Є®«ЁзҐбвў® 㧫®ў ў ¤ҐаҐўҐ Ї®ЁбЄ  :', v :12:1 );
t := t2 - t1; MyUnPackTime( t, min, sec, s100);
if(s100<10)
then WriteLn(fout,'ўаҐ¬п = ', min,' ¬Ё­ ', sec,'.0', s100,' ᥪ')
else WriteLn(fout,'ўаҐ¬п = ', min,' ¬Ё­ ', sec,'.', s100,' ᥪ');
Close (fout)
end.

{===========================================================================}
MONTECAR.PAS Ђ«Ј1
{ Ї®ЁбЄ ўбҐе аҐиҐ­Ё© }

program Monte_Carlo;
Uses Crt, Dos;
const maxN = 20;
type Nat = 1..maxN;
Nat0 = 0..maxN;
pos = array[Nat] of Nat;
var n : Nat;
nExp : integer;
v : Double;
fout : Text;
t, t1,t2 : LongInt;
min, sec, s100 : Word;

procedure MonteCarlo ( nExp : integer; n : Nat; var v: Double );
var k : Nat0;
m_k, num : Nat0;
i : Nat;
iExp : Word;
a, S_k : pos;
n_div_2 : Nat0;
all, sum, prod : Double;
function NoFerz ( k: Nat; s: Nat) : Boolean;
{ NoFerz = 'дҐа§м ­Ґ ¬®¦Ґв Ўлвм Ї®бв ў«Ґ­ ў бва®Єг s бв®«Ўж  k' }
{ ¬ ббЁў a[*] - ў­Ґи­Ё© }
var Flag : Boolean;
i : Nat;
begin {NoFerz}
Flag := True;
i := 1;
while (i<k) and Flag do
begin { Flag='дҐа§Ё [1..i) ­Ґ  в Єгов Ї®«Ґ <k,s>'}
{  в ЄгҐв «Ё дҐа§м Ё§ i-Ј® бв®«Ўж  Ї®«Ґ <k,s>?}
Flag := not ( (a[i]=s) or (abs(a[i]-s)=k-i) );
i := i+1
end {while};
NoFerz := not Flag
end {NoFerz};

procedure FormSk ( k: Nat; var m_k: Nat0; var S_k: pos );
{ д®а¬ЁагҐв "¬­®¦Ґбвў®" (ўҐЄв®а) S_k ў®§¬®¦­ле 室®ў Ё
ҐЈ® ¬®й­®бвм m_k; Ґб«Ё S_k Їгбв®, в® m_k=0 }
var s: Nat;
begin
m_k := 0;
for s:=1 to n do
if not NoFerz( k, s) then
begin { ¬®¦­® бв ўЁвм }
m_k := m_k + 1;
S_k[m_k] := s
end;
end {FormSk};

begin { MonteCarlo }
Randomize;
n_div_2 := n div 2;
all := 0;
for iExp:=1 to nExp do
begin { ®зҐаҐ¤­®Ґ ЁбЇлв ­ЁҐ }
m_k :=n-1;
num := Random ( m_k )+1;
a[1] := num+1;
k := 1;
prod :=1;
sum := prod;
FormSk ( k, m_k, S_k );

while m_k<>0 do
begin
prod := prod*m_k;
sum := sum + prod;
num := Random ( m_k ) + 1;
a[k] := S_k[num];
k := k + 1;
FormSk ( k, m_k, S_k );
end {while};

all := all + sum
end {for};
v := all/nExp
end { MonteCarlo };

begin
WriteLn(' n = ?'); ReadLn(n);
WriteLn(' nExp = ?'); ReadLn(nExp);
Assign(fout,'MONTEC.DAT');
Rewrite{Append}(fout);
WriteLn(fout,'Є®«ЁзҐбвў® дҐа§Ґ© = ',n:2);
WriteLn(fout,'Є®«ЁзҐбвў® ЁбЇлв ­Ё© = ',nExp:2);

MyGetTime(t1);

MonteCarlo ( nExp, n, v );

MyGetTime(t2);
WriteLn(fout,'Є®«ЁзҐбвў® 㧫®ў ў ¤ҐаҐўҐ Ї®ЁбЄ  :', v :12:1 );
t := t2 - t1; MyUnPackTime( t, min, sec, s100);
if(s100<10)
then WriteLn(fout,'ўаҐ¬п = ', min,' ¬Ё­ ', sec,'.0', s100,' ᥪ')
else WriteLn(fout,'ўаҐ¬п = ', min,' ¬Ё­ ', sec,'.', s100,' ᥪ');
Close (fout)
end.
{===========================================================================}
MONTECAR.PAS Ђ«Ј2
{ Ї®ЁбЄ ўбҐе аҐиҐ­Ё© }

Uses Dos,crt;

const MaxN=16;
type Nat=1..MaxN;
Nat0=0..MaxN;
var
H:array[1..MaxN] of boolean; { § ­пв (false) Ј®аЁ§®­в «м }
D1:array[2..2*MaxN] of boolean; { § ­пв (false) /-¤Ё Ј®­ «м }
D2:array[1-MaxN..MaxN-1] of boolean;{ § ­пв (false) \-¤Ё Ј®­ «м }

N:Nat;
nExp:integer; { Є®«ЁзҐбвў® Їа®е®¤®ў Ї® ¤ҐаҐўг }
v:Real; { Є®«ЁзҐбвў® Є®а­Ґ© }

fout:text; {ўл室­®© д ©«}

{--------------------------------------------------------------------------}
t, t1,t2 : LongInt;
min, sec, s100 : Word;
{--------------------------------------------------------------------------}

procedure Mass;
{ Ё§­ з «м­® ¬ ббЁўл Їгбвл(­Ґв § ­пвле Ї®§ЁжЁ©) }
var i:integer;
begin
for i:=1 to N do H[i]:=true;
for i:=2 to 2*N do D1[i]:=true;
for i:=1-N to N-1 do D2[i]:=true;
end{ Mass };

procedure FormS( num:Nat0;i:Nat );
{ ўлЎЁа Ґв 室 б ­®¬Ґа®¬ (num) Ё§ ўбҐе ў®§¬¦­ле }
var j:Nat;
k:Nat0;
begin
k:=0; j:=1;
while (j<=n)and(k<>num) do
begin
if H[j] and D1[i+j] and D2[i-j] then k:=k+1;
j:=j+1;
end;
H[j-1]:=false; D1[i+j-1]:=false; D2[i-j+1]:=false;
end{ FormS };

function ModS(i:Nat):Nat0;
{ ­ е®¤Ёв Є®«ЁзҐбвў® ў®§¬®¦­ле 室®ў }
var j:Nat;
m:Nat0;
begin
m:=0;
if i<=N then
for j:=1 to N do
if H[j] and D1[i+j] and D2[i-j] then m:=m+1;
ModS:=m;
end { ModS };

procedure MonteCarlo( nExp:integer; var v: Real );
var iExp:integer;
num,m:Nat0;
all,sum, prod : Real;
i:Nat;
begin { MonteCarlo }
Randomize;
all:=0;
for iExp:=1 to nExp do
begin { ®зҐаҐ¤­®Ґ ЁбЇлв ­ЁҐ }
Mass; prod:=1; i:=1; m:=N; sum:=0;
while m<>0 do
begin
prod:=prod*m;
sum:=sum+prod;
num:=Random(m); if (num=0) then num:=m;
FormS(num,i); i:=i+1; m:=ModS(i);
end {while};
all:=all+sum;
end {for};
v:=all/nExp;
end{ MonteCarlo };

begin
clrscr;
WriteLn(' n = ?'); ReadLn(n);
WriteLn(' nExp = ?'); ReadLn(nExp);
Assign(fout,'MONTE‘.DAT');
Rewrite(fout);
WriteLn(fout,'Є®«ЁзҐбвў® дҐа§Ґ© = ',n:2);
WriteLn(fout,'Є®«ЁзҐбвў® ЁбЇлв ­Ё© = ',nExp:2);
MyGetTime(t1);

MonteCarlo ( nExp, v );

MyGetTime(t2);
WriteLn(fout,'Є®«ЁзҐбвў® 㧫®ў ў ¤ҐаҐўҐ Ї®ЁбЄ  :', v :12:1 );
t := t2 - t1; MyUnPackTime( t, min, sec, s100);
if(s100<10)
then Write(fout,'ўаҐ¬п = ', min,' ¬Ё­ ', sec,'.0', s100,' ᥪ')
else Write(fout,'ўаҐ¬п = ', min,' ¬Ё­ ', sec,'.', s100,' ᥪ');
Close (fout)
end.
{===========================================================================}
Соседние файлы в папке QUEEN