Devintoji moksleivių informatikos olimpiada

                                       Pirmojo etapo uždavinių sąlygos

Jaunesniųjų grupė
 

114.  KAIP PASIEKTI LEMPUTĘ. Turime n dėžių, kurių briaunų a x b x c ilgiai yra žinomi. Dėžes galima guldyti ant bet kurio šono.

Kambaryje perdegė elektros lemputė. Atstumas nuo grindų iki jos yra t. Žmogus gali pasiekti tik aukštyje h kabančią lemputę.

Reikia rasti pirmąją iš duotų dėžių, kuria pasinaudojus galima įsukti naują lemputę. Kiek iš viso yra tam tinkamų dėžių?


Pradiniai duomenys teisingi: visi skaičiai teigiami, h <= t, dėžių briaunų ilgiai a, b, ir c neviršija h/2 (priešingu atveju žmogus negalės užlipti ant dėžės).

115. SKLYPAS. Ūkininkas gavo žemės. Tačiau vietoj konkretaus sklypo jam buvo duota tvora, susidedanti iš n dalių (atkarpų), kiekviena po 10 metrų ilgio. Ūkininkui buvo pasakyta, kad sklypas, kurį jis apsitvers šia tvora, bus jo. Sklypo tvora turi būti laužtė, kurią sudarančios atkarpos eina dviem kryptimis: šiaurė–pietūs (arba pietūs–šiaurė) ir rytai–vakarai (arba vakarai–rytai). Kiekviena laužtės atkarpa sudaroma iš sveikojo tvoros dalių skaičiaus.

Parašykite programą, kuri nustatytų, kokio didžiausio ploto sklypą gali apsitverti ūkininkas. Sklypo dydį reikia išreikšti hektarais ir arais (1ha = 100a = 10000m2). 


Pavyzdys
Pradinis duomuo
Rezultatas
80
4 ha 0 a

116. ELEKTRONINIS LAIKRODIS. Skaitmenys elektroniniame laikrodyje yra sudaromi iš horizontalių ir vertikalių pagaliukų:
 

Duotas horizontalių ir vertikalių pagaliukų skaičius. Parašykite algoritmą, kuris nustatytų, kokį laiką galėjo rodyti elektroninis laikrodis. Pradiniai duomenys tokie, kad sprendinys būtinai egzistuoja.


 

Pirmojo etapo uždavinių sąlygos

Vyresniųjų grupė
 

117.  SKAIČIŲ KRIPTOGRAMA. (Vykdymo laikas – 1 min.) Žemiau pateiktoje kriptogramoje dauginami skaitmenys pažymėti žvaigždutėmis:

     ****
  x   ***
     ****
   *****
  *****
  *******

Parašykite programą, kuri rastų visus duotos kriptogramos sprendinius. Vieną sprendinį turi sudaryti trys skaičiai: dauginamasis, daugiklis ir sandauga.


118. DEŠIMTAINĖS TRUPMENOS KEITIMAS PAPRASTĄJĄ.  Parašykite programą, kuri dešimtainę trupmeną paverstų paprastąja ir išspausdintų formatu S/V, kur S – skaitiklis, V– vardiklis. Be abejo, trupmena turi būti suprastinta. 



Pavyzdžiai:
0,25 = 1/4
0,375 = 3/8
4,4 = 22/5
0,3 = 3/10

119. KUBELIS SU SKAIČIAIS.  Ant stalo guli kubelis ir ant kiekvienos jo sienelės užrašyta po vieną sveikąjį skaičių. Ant viršutinės sienelės užrašytas skaičius a, ant apatinės – b, ant priekinės – c, ant užpakalinės – d, ant kairiosios – e, ant dešiniosios – f.

Yra keturios kubelio vartymo komandos: K – kubelis paverčiamas ant kairiojo šono, D – paverčiamas ant dešiniojo šono, P – paverčiamas ant priekinės pusės, A – paverčiamas ant galinės sienelės.

Duota kubelio vartymo komandos (raidžių be tarpų seka). Parašykite algoritmą nustatyti, koks skaičius bus matomas ant kubelio viršutinės sienelės, kai atliksime duotąją komandų seką.


 

Antrojo etapo uždavinių sąlygos

Jaunesniųjų grupė

120. SULTIS GERTI SVEIKA.  Kiekvienos savaitės pirmadienio rytą Jonas gauna k centų kišenpinigiams. Vienas butelis sulčių kainuoja s centų, o tušti buteliai superkami po b centų.
Kartą (tai buvo i-oji savaitės diena), iš viso turėdamas n centų, Jonas nusprendė kasdien (pradedant i-ąja diena) pirkti sulčių už visus turimus pinigus. Pinigai, gauti pardavus butelius, bus panaudojami kitą dieną sultims pirkti. Šitaip Jonas darys tol, kol jis įstengs nusipirkti bent vieną sulčių butelį.

Kiek butelių sulčių išgers Jonas?

Parašykite programą šiam uždaviniui spręsti. Pradiniai duomenys – natūralieji skaičiai k, s, b, n, i (1 <= i <= 7). Jei nusprendžiama sultis pirkti pirmadienį, tai iš karto gaunami kišenpinigiai (pasipildo turima pinigų suma). Už pirmadienį gautus kišenpinigius sultys perkamos pirmadienį.


Pavyzdys
Pradiniai duomenys
Rezultatas
k = 10, s = 3, b = 1, i = 6, n = 12
10

121. SKAITMUO SEKOJE. Sakykime, kad turime seką, sudarytą iš paeiliui einančių Fibonačio skaičių (be tarpų):

1123581321345589144233...

Parašykite programą šios sekos k-ajam skaitmeniui rasti.

Fibonačio skaičių seka – tai tokia seka, kurios pirmasis ir antrasis nariai lygūs vienetui, o kiekvienas tolesnis yra lygus prieš jį einančių dviejų narių sumai.


Pavyzdys
Pradinis duomuo
Rezultatas
15
8

122.  SKAIČIAUS SPĖJIMAS. Yra toks žaidimas, kai pirmasis žaidėjas sugalvoja sveikąjį skaičių (didesnį už nulį, bet mažesnį už maxint), o antrasis, sakydamas po vieną skaitmenį, bando atspėti sugalvotąjį skaičių.

Duotas sugalvotas skaičius ir šešių skaitmenų seka. Toji seka – tai antrojo žaidėjo spėti skaitmenys. Visi sekos skaitmenys skirtingi. Parašykite programą nustatyti, ar antrasis žaidėjas, pasakęs duotus šešis skaitmenis, atspėjo sugalvotąjį skaičių.


Jei skaičius atspėtas, tai rezultatas turi būti žodis TAIP ir skaičius, kuris rodo, kelių bandymų (skaitmenų) pakako duotajam skaičiui atspėti.

Jei skaičius nebuvo atspėtas, tai rezultatas – žodis NE ir skaičius, reiškiantis, kiek liko skirtingų neatspėtų skaitmenų.


Pavyzdžiai
Pradiniai duomenys
Rezultatai
Paaiškinimai
154560 
4 5 6 1 3
TAIP 5 Pasakius skaitmenis 0, 4, 5, 6, 1 skaičius buvo atspėtas;
33419 
8 4 7 1 5
NE 1 Neatspėti liko du trejetai, tačiau jie atitinka vieną skaitmenį;
3819 
4 2 3 5 7
NE 2 Neatspėti liko du skirtingi skaitmenys: 8 ir 1.

 

Antrojo etapo uždavinių sąlygos

Vyresniųjų grupė

123. ABĖCĖLĖ.   Laikant informatikos brandos egzaminą būna uždavinių, kai reikia rasti visus galimus duotos abėcėlės žodžius. Pavyzdžiui:

„Abėcėlė turi keturis simbolius: A, B, C, D. Parašykite visus galimus trijų ženklų žodžius, sudarytus iš šios abėcėlės simbolių.“

Parašykite programą apibendrintam uždaviniui spręsti. Duota n simbolių abėcėlė, kurią sudaro tik didžiosios lietuviškosios abėcėlės raidės. Reikia rasti visus galimus k ženklų žodžius, sudarytus iš šios abėcėlės simbolių.


Pradiniai duomenys turi būti skaitomi iš tekstinės bylos. Pirmoje bylos eilutėje įrašytas abėcėlę sudarančių simbolių skaičius n, tolesnėse n eilučių – patys abėcėlės simboliai. Paskutinėje eilutėje pateikiamas žodžių ilgis k.

Rezultatus įrašykite į tekstinę bylą.

124. NULIAI SKAIČIAUS GALE. Duotas dešimtainis natūrinis skaičius n. Parašykite programą rasti tokiai skaičiavimo sistemai, kuria užrašius duotąjį skaičių, gautume kuo daugiau nulių jo pabaigoje. Jei galimi keli variantai, užtenka pateikti vieną.


Pavyzdžiai
Pradinis duomuo
Rezultatas
Paaiškinimai
4
2
410 = 1002 
5
5
510 = 105 
 


 
125. ŽODYNAS. Kaip visi žinome, žodžiai žodynuose rūšiuojami pagal abėcėlę. Pateiktame sąraše lietuviškosios abėcėlės raidės surašytos prioriteto mažėjimo tvarka (vienoje eilutėje esančios raidės turi tą patį prioritetą):

A, Ą
B
C
Č
D
E, Ę, Ė
F
G
H
I, Į, Y
J
K
L
M
N
O
P
R
S
Š
T
U, Ų, Ū
V
Z
Ž

Du žodžiai lyginami tokiu būdu: imamos jų pirmosios raidės, ir žiūrimi prioritetai. Jei jie nesutampa, tai žodyne pirmiau bus žodis, turintis didesnio prioriteto raidę. Jei prioritetai lygūs, tai pereiname prie antroje pozicijoje esančių simbolių ir kartojame tuos pačius veiksmus. Jei vienas žodis yra kito žodžio pradžia, tai pirmesnis turi būti trumpesnysis žodis.

Reikia parašyti programą, kuri iš tekstinės bylos perskaitytų žodžius, juos surūšiuotų ir sutvarkytą žodžių sąrašą įrašytų į tekstinę bylą.


Kiekvienoje pradinių duomenų bylos eilutėje yra po vieną žodį, kurio ilgis neviršija dvidešimties simbolių. Žodžiai sudaryti tik iš didžiųjų lietuviškosios abėcėlės raidžių. Byloje įrašyta ne daugiau kaip šimtas žodžių (vienodų nėra).

Rezultatų byloje kiekvienas žodis rašomas į atskirą eilutę.

Pavyzdys
Pradiniai duomenys
Rezultatai
ASTA 
AŠMENYS 
GYVASIS 
ĄŽUOLYNAS 
GYVAS 
ĄSA 
ATŽALYNAS
ĄSA 
ASTA 
AŠMENYS 
ATŽALYNAS 
ĄŽUOLYNAS 
GYVAS 
GYVASIS

126. ŠEŠIOLIKTAINIŲ SKAIČIŲ KODAVIMAS. (teorinis uždavinys). Šešioliktainiai skaitmenys yra 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Visi skaitmenys šešioliktainio skaičiaus užraše vienodai tikėtini. Nuliai skaičiaus pradžioje nerašomi.

Sveikojo teigiamo šešioliktainio skaičiaus užrašą reikia užkoduoti tik dešimtainiais skaitmenimis: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.


Kodavimo taisyklės:
1. Kiekvieną šešioliktainio skaičiaus skaitmenį reikia koduoti atskirai (t. y. viso šešioliktainio skaičiaus negalima paversti dešimtainiu).
2. Vieną šešioliktainio skaičiaus skaitmenį galima koduoti dviem dešimtainiais skaitmenimis.

Reikalavimai kodavimui:
1. Koduotą skaičiaus užrašą turi būti galima vienareikšmiškai dekoduoti.
2. Koduoto skaičiaus ilgis turi būti minimalus.

Sugalvokite kodavimo būdą ir įrodykite, kad jis tikrai tenkina šiuos reikalavimus.

 

Trečiojo etapo uždavinių sąlygos

Pirmoji dalis

Jaunesniųjų grupė

127. SIŲSTUVAI IR IMTUVAS.   Į vieną imtuvą signalus siunčia n siųstuvų (1 <= n <= 20 ).
Siųstuvas k skleidžia signalus kas Tk (1 <= Tk <= 100) sekundžių, o šie imtuvą pasiekia po Lk (1 <= Lk <= 50) sekundžių. Taigi kiekvieno siųstuvo darbą aprašo du skaičiai. Pavyzdžiui, Tk = 3, Lk = 2. Jei siųstuvas išsiųs signalus laiko momentais 1 ir 4, tai imtuvas gaus signalus laiko momentais 3 ir 6.

Gali atsitikti taip, kad tuo pačiu metu į imtuvą ateina keli signalai iš karto. Gautasis signalas (kelių signalų mišinys) vadinamas blogu signalu.

Tarkime, kad visi siųstuvai pasiuntė pirmąjį signalą vienu metu ir toliau veikia be perstojo.

Parašykite algoritmą, kuris nustatytų, kiek procentų visų signalų, kuriuos gauna imtuvas, yra blogi.


Pradiniai duomenys skaitomi iš bylos. Pirmoje eilutėje įrašytas siųstuvų skaičius n. Tolesnėse n eilučių yra po du skaičius, aprašančius kiekvieno siųstuvo darbą. Pirmasis skaičius eilutėje yra Tk , antrasis – Lk .

Rezultatą apvalinkite iki sveikojo skaičiaus, jį spausdinkite kompiuterio displėjuje.

Pavyzdys
Pradiniai duomenys
Rezultatas
 
2 5 
3 5 
3 4
40

128. POKERIS. Šis kortų žaidimas dažnas lošimų automatuose. Panagrinėkime supaprastintą pokerio variantą. Automatas iš 24 kortų kaladės (nuo devynakės iki tūzo) parenka lošėjui penkias atsitiktines kortas. Žaidėjas nusprendžia, kurias keturias iš penkių kortų jis norėtų pasilikti, o kurią vieną pakeisti (kortą keisti privaloma). Nurodžius keičiamą kortą, automatas įdeda ją į kaladę ir iš jos išrenka bet kurią vieną kortą.

Nuo turimų penkių kortų priklauso išlošimas. Išlošiama, jei iš turimų kortų galima sudaryti kurią nors iš žemiau išvardytų kombinacijų:

1. Pora (dvi vienodo rango kortos, pavyzdžiui, dvi damos);
2. Dvi poros (pavyzdžiui, dvi dešimtakės ir du tūzai);
3. Trejetas (trys vienodo rango kortos, pavyzdžiui, trys devynakės);
4. Ketvertas (keturios vienodo rango kortos, pavyzdžiui, keturi karaliai);
5. Pilni namai – (juos sudaro aukščiau apibrėžti trejetas ir pora);
6. Visos kortos vienos rūšies (pavyzdžiui, visi kryžiai);
7. Visos kortos iš eilės (pavyzdžiui, devynakė, dešimtakė, valetas, dama ir karalius; kortų išsidėstymo tvarka nesvarbi);
8. Pokeris – visos kortos išdėstomos iš eilės ir yra vienos rūšies.
Daugeliu atveju galima sudaryti kelias kombinacijas. Pavyzdžiui, jei turime Ketvertą, galime sudaryti ir Porą, ir Trejetą. Tokiu atveju laikykite, kad susidaro tik viena išlošiamoji situacija – ta, kurios numeris (prioritetas) didžiausias.

Kortų kombinacijos pasitaikymo tikimybė yra galimų skirtingų kortų kombinacijų, kuriose yra norima kombinacija, skaičiaus santykis su visų galimų kombinacijų skaičiumi.

Pavyzdys. Tarkime, jūs pasilikote dvi damas ir du karalius. Atsitiktinai ištraukus penktą kortą galite gauti arba tą pačią situaciją (Dvi poras) arba Pilnus namus.

Kaip sužinoti, kokia tikimybė susidaryti Pilniems namams atsitiktinai ištraukus penktą kortą? Kadangi iš 24 kortų kaladės išimtos dvi damos ir du karaliai (t. y. keturios kortos), tai penktą kortą galime ištraukti 24 – 4 = 20 būdų, taigi iš viso yra 20 galimų skirtingų kombinacijų. Tačiau Pilni namai susidarys tik tada, jei ištraukta korta bus arba dama, arba karalius. Kadangi tarp kaladėje likusių 20 kortų yra dvi damos ir du karaliai, tai yra 2 + 2 = 4 galimos skirtingos kombinacijos, kada gausime Pilnus namus. Taigi tikimybė, kad susidarys Pilni namai bus 4 / 20 = 0,2.
O štai tikimybė, kad pasilikę dvi damas ir du karalius ir atsitiktinai ištraukus penktą kortą, turėsime tas pačias Dvi poras, lygi 0,8. Tai nesunku apskaičiuoti. Mat visų galimų situacijų tikimybių suma visada lygi 1. O šiuo atveju galimos tik dvi situacijos.


Parašykite programą, kuri pagal duotas penkias kortas nuspręstų, kurią iš jų reikia pakeisti, kad tikimybė sudaryti kurią nors išlošiamąją kombinaciją būtų didžiausia, bei rastų išlošiamosios kombinacijos numerį ir tą tikimybę.
Jei galimi keli sprendimai, pateikite vieną.

Pradiniai duomenys įrašyti tekstinėje byloje. Pirmose penkiose jos eilutėse įrašyti automato išrinktų kortų kodai. Kortos koduojamos viena didžiąja raide ir vienu skaičiumi:
– raidė nurodo kortos rūšį: Š – širdys, B – būgnai, K – kryžiai, V – vynai.
– skaičius nurodo kortos rangą: 0 – devynakė, 1 – dešimtakė, 2 – valetą, 3 – damą, 4 – karalių, 5 – tūzą.
Eilutėse nėra tarpų, visos kortos yra skirtingos.

Rezultatai surašomi į bylą. Pirmoje eilutėje turėtų būti įrašytas keičiama korta, antrojoje – išlošiamos kombinacijos numeris, trečiojoje – tikimybė sudaryti tą kombinaciją.

Pavyzdys
Pradiniai duomenys
Rezultatai
K4 
V4 
V1  
B3 
Š3
V1 
2 
0.8

 

Trečiojo etapo uždavinių sąlygos

Pirmoji dalis

Vyresniųjų grupė

129. SIŲSTUVAI IR IMTUVAS. (Vykdymo laikas – 1 min) Į vieną imtuvą signalus siunčia n siųstuvų ( 1 <= n <= 20 ).
Siųstuvas k skleidžia signalus kas Tk sekundžių, o šie imtuvą pasiekia po Lk sekundžių. Kiekvienas siųstuvas turi pasiųsti pranešimą susidedantį iš Pk signalų. Taigi kiekvieno siųstuvo darbą apibūdina trys skaičiai. Pavyzdžiui, Tk = 3, Lk = 2, Pk = 2. Jei siųstuvas įjungiamas laiko momentu 0, tai jis išsiųs du signalus laiko momentais 0 ir 3, o imtuvas gaus signalus laiko momentais 2 ir 5.

Gali atsitikti taip, kad tuo pačiu metu į imtuvą ateina keli signalai iš karto. Gautasis signalas (kelių signalų mišinys) vadinamas blogu signalu.

Siųstuvai gali būti įjungti arba išjungti. Kai siųstuvas pradeda veikti (t. y. įjungiamas), jis tuoj pat išsiunčia savo pranešimą ir tada išjungiamas.

Momentas, kada paleidžiamas(i) dirbti pirmasis(ieji) siųstuvas(i), vadinamas nuliniu laiko momentu (nuo tada imamas skaičiuoti laikas). Darbo pabaiga laikomas momentas, kai imtuvas gauna paskutinį signalą.

Parašykite algoritmą nustatantį, kuriuo laiko momentu reikia įjungti kiekvieną siųstuvą, kad imtuvas negautų blogų signalų, o visi pranešimai būtų perduoti per trumpiausią laiką.

Pastaba. Laikas, per kurį siųstuvas perduoda pranešimą imtuvui, neviršija dviejų šimtų sekundžių. Pradedama skaičiuoti nuo siųstuvo įjungimo momento ir baigiama, kai imtuvas gauna paskutinį pranešimo signalą.


Pradiniai duomenys skaitomi iš tekstinės bylos. Pirmoje eilutėje įrašytas siųstuvų skaičius n. Tolesnėse n eilučių yra po tris skaičius, aprašančius kiekvieno siųstuvo darbą. Pirmas skaičius eilutėje yra Tk , antrasis – Lk ,o trečiasis – Pk.

Rezultatą reikia įrašyti į bylą. Joje turi būti n eilučių, kiekvienoje jų – po vieną skaičių. Šis skaičius rodo, kuriuo laiko momentu (kurią sekundę) reikia įjungti kiekvieną siųstuvą. Pirma rezultatų bylos eilutė atitiks pirmąjį siųstuvą (įrašytą antroje pradinių duomenų bylos eilutėje), antra – antrąjį siųstuvą ir t. t. Jei galimi keli atsakymo variantai, pakanka pateikti bet kurį vieną.

Pavyzdys
Pradiniai duomenys
Rezultatai
3 
2 4 3 
5 1 3 
3 2 2
4 
0 
0

130. TRYS VIENODI SKAITMENYS.  (Vykdymo laikas – 50 s.) Yra tokių įdomių skaičių, kurie gali būti išreikšti dviejose skirtingose skaičiavimo sistemose trimis vienodais skaitmenimis, pavyzdžiui,
273 = 3339 = 11116.

Parašykite algoritmą visiems intervalo [m, n] skaičiams, pasižymintiems šia savybe, rasti (1 <= m <= n <= 10000).


Pradiniai duomenys – natūralieji skaičiai m ir n, esantys tekstinėje byloje.

Rezultatai surašomi į bylą. Pirmoje eilutėje rašomas dešimtainis skaičius, kuris tenkina uždavinio sąlygą.

Kitose dviejose eilutėse – šio skaičiaus užrašas dviem skaičiavimo sistemomis.

Skaičius kuria nors skaičiavimo sistema (nedešimtaine) užrašomas griežtai laikantis šių taisyklių: pradžioje – sistemos pagrindas, po to palikus vieną tarpą – skaičiaus užrašas šia sistema (tarp skaitmenų paliekama po vieną tarpą). Jei skaičiavimo sistema didesnė už dešimtainę, dalis skaitmenų užrašomi dviem dešimtainiais skaitmenimis.

Ketvirtoje bylos eilutėje rašomas tolesnis sąlygas tenkinantis skaičius ir t. t.

Jei duotame intervale nėra nei vieno skaičiaus, pasižyminčio nurodyta savybe, į rezultatų bylą rašomas nulis.


Pavyzdys
Pradiniai duomenys
Rezultatai
Paaiškinimas
152 543 273 
9 3 3 3 
16 1 1 1
27310 = 3339 = 11116

 
 

Trečiojo etapo uždavinių sąlygos

Antroji dalis

Jaunesniųjų grupė

131. LOBIO IEŠKOJIMAS.  Tarkime, turime 4x4 laukelių labirintą. Keliautojo tikslas – kuo greičiau rasti paslėptą lobį ir išeiti iš labirinto. Į labirintą galima patekti tik pro vieną kurioje nors išorinėje sienoje esantį plyšį – tai drauge įėjimas ir išėjimas. Būdamas labirinte (t.y. kuriame nors laukelyje) keliautojas gali eiti bet kuria iš keturių krypčių: į viršų, į apačią, į kairę, į dešinę, žinoma, jei tik netrukdo sienos. Įstrižai eiti negalima.

Labirinto pavyzdys pateiktas žemiau esančiame paveiksle.


Kiekvienas labirinto laukelis yra tam tikros rūšies. Iš viso esama šešių rūšių laukelių:

Sausuma S. Tokių laukelių labirinte yra penki.

Trys duobės D1, D2, D3. Jei keliautojas ateina į laukelį D1, tai jis permetamas į laukelį D2 ir iš ten atlieka tolesnį ėjimą. Analogiškai patekęs į laukelį D2,  keliautojas permetamas į D3, o atsidūręs laukelyje D3, patenka į laukelį D1.

Pelkė P. Ji viena. Pelke prasideda upė.

Žiotys Ž. Jos vienos – jomis baigiasi upė.

Upė. Ją sudaro penki laukeliai U1, U2, U3, U4, U5. Upėje atsidūrusį keliautoją neša srovė. Iš laukelio U1 jis patenka į U4, iš U2 – į U5. Jei keliautojas patenka į kitus tris upės laukelius, jis nunešamas į žiotis Ž. Toliau keliautojas turės tęsti kelionę iš laukelio, į kurį jį atnešė srovė. Visi upės laukeliai susisiekiantys, t. y. U1 turi bendrą kraštinę su U2, U2 su U3, ir t. t. Pelkė P susisiekia su U1, o žiotys Ž – su U5.

Lobis L. Laikoma, jog lobis surastas, kai keliautojas atsistoja laukelyje L.

Labirinte yra dvi tiesios sienos: viena trijų laukelių ilgio, kita – dviejų (jos eina laukelių pakraščiu). Siena niekuomet nekerta upės, neatskiria pelkės arba žiočių nuo upės. Be to, abi sienos negali viena su kita liestis. Vienas sienos galas visada liečiasi su labirinto išorine siena.

Keliautojas turi du užtaisus sienoms sprogdinti. Sienos sprogdinimas lygus vienam ėjimui. Išsprogdinęs skylę sienoje, keliautojas gali pro ją pralįsti. Sprogdinant sieną, sugriaunamas tik vienas sienos laukelis, o ne visa siena. Susprogdintos sienos neatsistato. Draudžiama sprogdinti išorines labirinto sienas, t. y pasidaryti išėjimą. Keliautojas gali ir nepanaudoti sprogmenų arba panaudoti tik vieną.

Sprogdinti galima iš bet kurių laukelių. Jei sprogdinama iš laukelių, į kuriuos keliautojas buvo permestas ar jį į ten atnešė srovė, po sprogdinimo keliautojas pasilieka tame pačiame langelyje. Pirmu ėjimu po sprogdinimo keliautojas gali lįsti pro skylę arba eiti į kitą gretimą laukelį (t. y. jis nebus iš karto permestas į kitą duobę bei jo nenuneš srovė). Beje, tai yra vienintelis atvejis, kai keliautojas pasilieka tame pačiame langelyje.

Įėjimas į labirintą bei išėjimas iš labirinto laikomas ėjimu. Permetimas iš vienos duobės į kitą arba nunešimas pagavus srovei nėra ėjimas.

Parašykite programą, kuri pagal duotą labirintą nustatytų, kiek mažiausiai ėjimų reikia, kad keliautojas rastų lobį ir išeitų iš labirinto.


Pradiniai duomenys skaitomi iš bylos. Pirmoje eilutėje pateikti du skaičiai – laukelio, į kurį patenkama įėjus į labirintą, koordinatės (x, y). Tolesnėse 16-oje eilučių įrašyta po du skaičius – visų labirinto laukelių koordinatės (x, y). Koordinatės išdėstytos tokia tvarka: P, U1, U2, U3, U4, U5, Ž, penkių S laukelių koordinatės, D1, D2 , D3, L.

Paskutinėse dviejose bylos eilutėse yra po tris skaičius. Pirmoje iš jų aprašyta dviejų laukelių ilgio siena, antroje – trijų. Pirmasis skaičius eilutėje parodo, prie kurios labirinto išorinės sienos liečiasi vidinė siena:. skaičius 1 nurodo lietimąsi su viršutine siena, 2 – su dešiniąja, 3 – su apatine, 4 – su kairiąja. Kiti du skaičiai nusako tarp kurių eilučių ar stulpelių yra siena (žr. žemiau pateiktą pavyzdį).

Pradiniai duomenys tokie, kad sprendinys visuomet egzistuoja.


Rezultatas – minimalus ėjimų skaičius – spausdinamas displėjaus ekrane.

Pavyzdys (atitinka 131.1 pav.) 
Pradiniai duomenys
Rezultatas
Paaiškinimai
3  1                
1  3                         
1  2                         
1  1  
2  1                          
3  1                        
4  1                         
4  2                         
3  2                         
2  3                         
1  4  
2  4  
4  4  
2  2  
4  3  
3  4  
3  3  
2  2  3  
3  1  2
8 Atsakyme pateiktas vienas iš galimų ėjimų variantų: 
1) pro įėjimą patenkama į U4 ir upė nuneša į žiotis Ž, 
2) sprogdinama siena tarp Ž ir D2
3) iš Ž pro skylę sienoje einama į D2, keliautojas permetamas į D3
4) iš D3 einama į L; lobis surastas, 
5) iš L einama į D3, patenkama į D1
6) sprogdinama siena iš D1 į U1
7) einama iš D1 į U1, upė nuneša į U4
8) išeinama iš labirinto.

132. NETVARKINGAS BIBLIOTEKININKAS. Bibliotekoje yra leidinių, kurie susideda iš kelių tomų. Tačiau šie tomai lentynose sumaišyti su kitų leidinių tomais, pavyzdžiui:


Skaičiai virš lentynos žymi vietą lentynoje, skaičiai pirmojoje eilutėje rodo leidinio numerį, antrojoje – leidinio tomo numerį.

Knygų tvarkyti bibliotekininkas nenori. Tačiau nori, kad būtų lengviau jas rasti. Tam jis susirado kiekvieno leidinio pirmą tomą, pasižiūrėjo, kiek tomų sudaro leidinį ir įsidėmėjo pirmojo tomo vietą lentynoje, t. y. susidarė lentelę. Aukščiau pateiktam pavyzdžiui lentelė atrodytų šitaip:
 
Pirma lentelė
Leidinys
Pirmo tomo vieta
Tomų skaičius
1
1
4
2
3
4
3
10
2
4
11
1
 
Po to bibliotekininkas sudarė dar vieną lentelę, turinčią tiek elementų, kiek yra vietų lentynoje. Į kiekvieną lentelės elementą įrašė tam tikrą skaičių. Jei vieta lentynoje tuščia, į lentelės elementą įrašė nulį. Jei toje vietoje padėtas kurio nors leidinio tomas, į lentelę įrašė vietą, kurioje padėtas sekantis  to paties leidinio tomas. Jei ten padėtas paskutinis kurio nors leidinio tomas, į lentelę įrašomas skaičius: -1.

Mūsų pateiktam pavyzdžiui antroji lentelė atrodo šitaip:
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
4
5
6
2
-1
7
9
-1
-1
8
-1
0
0
0
Tokiu būdu bibliotekininkas galėjo lengviau rasti skaitytojo pageidaujamą tomą. Pavyzdžiui, skaitytojas pageidauja gauti antrojo leidinio trečiąjį tomą. Iš pirmos lentelės bibliotekininkas mato, kad pirmasis tomas lentynoje yra trečias. Tada iš antros lentelės trečio stulpelio aišku, kad antrasis tomas bus šeštoje lentynos pozicijoje. O šeštasis stulpelis rodo, kad trečiasis tomas yra septintoje lentynos pozicijoje.

Tačiau kartą prisireikė perrašyti antrąją lentelę. Bibliotekininkas netyčia galėjo padaryti vieną klaidą – įrašyti ne tokį skaičių antroje eilutėje. Bibliotekininkas tikrai žino, kad perrašydamas nulius jokios klaidos nepadarė: kur senoje lentelėje buvo įrašyti nuliai, ten ir perrašytoje lentelėje tikrai yra nuliai. Taip pat aišku, kad pakeistasis skaičius yra realus, t.y. jei lentynoje yra 15 vietų knygoms, bibliotekininkas per klaidą negalėjo įrašyti 16 ar didesnio skaičiaus.

Parašykite algoritmą, kuris nustatytų, ar bibliotekininkas padarė klaidą, ir jei taip – ištaisytų ją, jeigu tai įmanoma.


Pradiniai duomenys skaitomi iš bylos. Pirmoje eilutėje įrašytas leidinių skaičius n (1 <= n <= 100). Vieną leidinį sudaro ne daugiau kaip 20 tomų.

Tolesnėse n eilučių pateikta pirmoji lentelė. Į kiekvieną eilutę įrašyta po du skaičius: leidinio pirmojo tomo vieta ir leidinio tomų skaičius.

Kitoje eilutėje įrašytas vietų skaičius lentynoje k (1 <= k <= 2000). Toliau eina k eilučių, kuriose pateikta antroji lentelė. Kiekvienoje eilutėje įrašyta po vieną skaičių.


Rezultatai spausdinami ekrane. Jeigu klaidos nebuvo, tai spausdinamas pranešimas GERAI. Jei klaida vis dėlto buvo padaryta ir jos pataisyti nepavyksta, spausdinamas pranešimas BLOGAI.

Jei klaidą pataisyti galima, tai spausdinami du skaičiai (vienoje eilutėje, atskirti tarpu). Pirmasis skaičius – tai perrašytos lentelės stulpelis, kur buvo klaida, antrasis – atstatyta reikšmė.


Pavyzdžiai
Pradiniai duomenys
1 pavyzdys
2 pavyzdys
4 
1 4 
3 4 
10 2 
11 1 
14 
4 
5 
6 
2 
-1 
7 
9 
-1 
-1 
8 
-1 
0 
0 
0
4 
1 4 
3 4 
10 2 
11 1 
14 
4 
1 
6 
2 
-1 
7 
9 
-1 
-1 
8 
-1 
0 
0 
0 
 
Rezultatai
GERAI 2 5
Paaiškinimas
  Buvo padaryta klaida 2-ame lentelės stulpelyje: penketas pakeistas į vienetą. Todėl susidarė ciklas: pirmas tomas stovi pirmoje pozicijoje, antras – ketvirtoje, trečias – antroje, o ketvirtas – vėl pirmoje.

133. NEŽINOMAS KODAVIMAS. Duota programa KOD.EXE. Ji dvejetainėje byloje A esančius duomenis užkoduoja ir surašo į bylą B.

Kaip koduoja programa KOD.EXE, galite sužinoti eksperimentuodami – pateikdami jai savus pradinius duomenis ir analizuodami iš jos gautus rezultatus.


Yra žinomi tik kodavimo principai:
Į pradinių duomenų bylą A žiūrima kaip į ištisinę bitų eilę. Bitai skirstomi į vienodo ilgio grupes po 7, 6, 5, 4, 3 arba 2 bitus. Jei paskutinė grupė nepilna, tai jos pabaiga užpildoma dvejetainiais nuliais.

Kiekviena grupė koduojama atskiru baitu.

Parašykite programą, kuri iškoduotų duomenis, t. y. iš bylos B gautų bylą C, identišką bylai A.
Taip pat reikia pateikti aprašymą, iš kurio būtų aišku, kaip Jūs analizavote programą KOD.EXE.

Kodavimo programa KOD.EXE turi du parametrus. Ja pasinaudoti galima perduodant koduojamos bylos ir bylos, į kurią turi būti rašomi užkoduoti duomenys, vardus. Pavyzdžiui:

KOD.EXE duom.dat duom.kod

Testuojama naudojantis bylomis, kurių dydis (užkoduotų) ne daugiau kaip 10000 baitų.


Pradiniai duomenys ir rezultatai Iškodavimo programa pradinius duomenis (užkoduotą tekstą) turi skaityti iš bylos KOD.DAT. Iškoduotą tekstą ji turi rašyti į bylą KOD.REZ.

134. ŠAUDYMAS. Visiems gerai žinomas šaudymo taikinys: apskritimais apribotas plotas.


Taikinio centras sutampa su koordinačių pradžia. Duotas pirmojo (mažiausio) apskritimo spindulys r. Į jį patekę šūviai vertinami 10 balų. Šūvis, patekęs ant apskritimo ribos, vertinamas taip, tarsi būtų pataikyta į apskritimo ribojamą plotą. Kiekvieno tolesnio apskritimo spindulys du kartus didesnis už prieš einančio, o šūviai vertinami vienu balu mažiau. Jei pataikyta už paskutiniojo (dešimtojo) apskritimo ribos, šūvis vertinamas 0 balų.

Parašykite algoritmą balų, surinktų už šūvius, sumai rasti.


Pradiniai duomenys įrašyti tekstinėje byloje. Pirmoje eilutėje nurodytas mažiausio apskritimo spindulys r bei šūvių skaičius. Antroje – pirmojo šūvio koordinatės, trečioje – antrojo ir t. t.

Visi pradiniai duomenys yra sveikieji skaičiai.


Rezultatą spausdinkite displėjaus ekrane.

Pavyzdys
Pradiniai duomenys
Rezultatas
1 2  
1 1 
0 0 
19

135. LABIRINTAS.  Duotas stačiakampis labirintas, sudarytas iš laukelių. Jūs stovite labirinto įėjime ir žiūrite labirinto kryptimi. Įėjimą iš abiejų pusių riboja sienos.

Parašykite algoritmą, kuris padėtų Jums išeiti iš labirinto. Iš labirinto visuomet galima išeiti.


Pradinių duomenų nėra. Vaikščioti labirintu jums padės modulis LABIR.

Kreipdamiesi į modulio procedūrą dydis, sužinosite labirinto aukštį n (3 <= n <= 64000) ir plotį m (3 <= m <= 100). Abu skaičiai, kuriuos grąžina procedūra, yra longint tipo.

Kreipdamiesi į funkcijas siaure, pietus, rytai, vakarai sužinosite, ar galite iš laukelio, kuriame stovite, judėti atitinkama kryptimi. Visos šios funkcijos grąžina vieną loginio tipo reikšmę.

Nė viena iš aukščiau išvardytų funkcijų neturi pradinių duomenų.

Kreipdamiesi į procedūras priekin, atgal, kairėn, dešinėn paeisite labirintu per vieną laukelį nurodyta kryptimi. Šios procedūros negrąžina jokio rezultato.

Jūsų programa neturi spausdinti jokių rezultatų. Pasiekus išėjimą iš labirinto, modulis sustabdys jūsų programą. Modulis taip pat sustabdys jūsų programą, jei bandysite atlikti klaidingą ėjimą, t. y. eiti į laukelį, kuriame yra labirinto sienos arba jei jūsų programa viršys tam tikrą ribinį ėjimų skaičių (taip gali atsitikti, jei, pavyzdžiui, imsite vaikščioti ratu).

Nebūtina rasti trumpiausią kelią iš labirinto.


136. NAMELIAI.  (Vykdymo laikas – 1 min) Duota n pagaliukų, kurių ilgiai išreikšti sveikaisiais skaičiais. Iš jų reikėtų sudėti namelius: jo siena – kvadratas, stogas – bet koks trikampis, kurio viena kraštinė sutampa su sienos briauna.
 


Pagaliukų sudurti negalima. Kiekvieną pagaliuką galima panaudoti tik vieną kartą.

Parašykite programą, kuri suskaičiuotų, kiek daugiausia namelių galima sudaryti iš duotų pagaliukų.


Pradiniai duomenys įrašyti tekstinėje byloje. Pirmoje eilutėje įrašytas skaičius n (0 <= n <= 31), tolesnėse n eilučių – atkarpų ilgiai, po vieną atkarpą eilutėje.

Rezultatas – namelių skaičius – pateikiamas byloje.

Pavyzdys
Pradiniai duomenys
Rezultatas
 
3 
4 
4 
2 
4 
8 
4
1

 

Trečiojo etapo uždavinių sąlygos

Antroji dalis

Vyresniųjų grupė

137. SIŲSTUVAI IR IMTUVAS. Į vieną imtuvą signalus siunčia n siųstuvų ( 1 <= n <= 20 ).
Siųstuvas k skleidžia signalus kas Tk sekundžių, o šie imtuvą pasiekia po Lk sekundžių. Kiekvienas siųstuvas turi pasiųsti pranešimą, susidedantį iš Pk signalų. Taigi kiekvieno siųstuvo darbą apibūdina trys skaičiai. Pavyzdžiui, Tk = 3, Lk = 2, Pk = 2. Jei siųstuvas įjungiamas laiko momentu 0, jis išsiųs du signalus laiko momentais 0 ir 3, o imtuvas gaus signalus laiko momentais 2 ir 5.

Gali atsitikti taip, kad tuo pačiu metu į imtuvą ateina keli signalai iš karto. Gautasis signalas (kelių signalų mišinys) vadinamas blogu signalu.

Siųstuvai gali būti įjungti arba išjungti. Kai siųstuvas pradeda veikti (t. y. įjungiamas), jis tuoj pat išsiunčia savo pranešimą ir tada išjungiamas. Siųstuvai turi pradėti darbą paeiliui: pirmasis, antrasis ir t. t.

Pavyzdžiui, trečiasis siųstuvas negali būti įjungtas anksčiau nei antrasis (bet gali dirbti kartu su anksčiau įjungtais siųstuvais). Tuo pačiu momentu pradėti siųsti pranešimus keli siųstuvai negali.

Momentas, kada paleidžiamas dirbti pirmasis siųstuvas, vadinamas nuliniu laiko momentu (nuo tada pradedamas skaičiuoti laikas). Darbo pabaiga laikomas momentas, kai imtuvas gauna paskutinį signalą.

Parašykite algoritmą, kuris nustatytų, kuriuo laiko momentu reikia įjungti kiekvieną siųstuvą laikantis nustatytos tvarkos, kad imtuvas negautų blogų signalų, o visi pranešimai būtų perduoti per trumpiausią laiką.

Pastaba. Laikas, per kurį siųstuvas perduoda pranešimą imtuvui, neviršija dviejų šimtų sekundžių. Pradedama skaičiuoti nuo siųstuvo įjungimo momento ir baigiama, kai imtuvas gauna paskutinį pranešimo signalą.


Pradiniai duomenys skaitomi iš bylos. Pirmoje eilutėje įrašytas siųstuvų skaičius n. Tolesnėse n eilučių yra po tris skaičius, aprašančius kiekvieno siųstuvo darbą. Pirmas skaičius eilutėje yra Tk , antrasis – Lk ,o trečiasis – Pk.

Rezultatą reikia įrašyti į bylą. Joje turi būti n eilučių, kiekvienoje jų – po vieną skaičių. Šis skaičius rodo, kuriuo laiko momentu (kurią sekundę) reikia įjungti kiekvieną siųstuvą. Pirma rezultatų bylos eilutė atitiks pirmąjį siųstuvą (joje visada įrašytas nulis), antra – antrąjį siųstuvą ir t. t. Jei galimi keli atsakymo variantai, užtenka pateikti bet kurį vieną.

Pavyzdys
Pradiniai duomenys
Rezultatai
5 
3 2 4 
1 3 3 
2 4 3 
3 5 4 
2 3 4
0 
9 
11 
13 
23

138. SUKABINTI ŽIEDAI. Tarpusavyje sukabinta n žiedų. Pavyzdys pateiktas 138.1 paveiksle.


Parašykite algoritmą, kuris rastų, kiek daugiausiai žiedų galima pašalinti, kad tarp žiedų a ir b liktų vientisa, be išsišakojimų grandinė.


Pradiniai duomenys įrašyti tekstinėje byloje. Pirmoje eilutėje įrašytas žiedų skaičius n (1 <= n <= 300), žiedų a ir b numeriai bei skaičius k (1 <= k <= 1000). Tolesnėse k eilučių įrašyta po du skaičius: sujungtų žiedų porų numeriai.

Rezultatą pateikite displėjaus ekrane. 
Pavyzdys
Pradiniai duomenys
Rezultatas
10 1 10 9  
1  2 
2  3 
3  4 
4  5 
4  7 
5  6 
7  8 
8  9 
9 10
2

139. ERDVĖLAIVIS. Erdvėlaivis turi nugabenti svarbų krovinį iš vienos bazės į kitą, tačiau skrydžiui ne visada užtenka kuro, kurį jis gali pasiimti kelionės pradžioje. Todėl jis skrenda pro tarpines bazes, jose papildydamas kuro atsargas. Įvairiose bazėse kuro atsargų papildymas kainuoja nevienodai, todėl turėdamas ribotą kreditą skirtą kurui erdvėlaivio vadas ne visada pasirenka trumpiausią kelią.

Galioja šios sąlygos:

  •  kuro papildymas bazėje kainuoja fiksuotą piniginių vienetų skaičių (nesvarbu kiek pilama kuro), todėl kuro bakas užpildomas pilnai;
  •  erdvėlaivis skrieja pastoviu greičiu;
  •  laikoma, kad bazėse erdvėlaivis užtrunka artimą nuliui laiko tarpą, todėl kelionės trukmė proporcinga nuskristam keliui.
  • Parašykite programą, kuri rastų tokį erdvėlaivio skridimo maršrutą, kad krovinys būtų pristatytas kiek galima greičiau.

    Pradiniai duomenys – tekstinės bylos pirmoje eilutėje įrašyti keturi sveikieji skaičiai: Likusiose N eilučių įrašyta po keturis sveikuosius skaičius k, x, y, z, apibūdinančius atitinkamą kuro bazę:
  • k – kuro bako užpildymo kaina bazėje, nurodyta piniginiais vienetais (0 <= k <= 100),
  • (x, y, z) – bazės padėtis erdvėje, visos koordinatės nurodytos ilgio vienetais (0 <= x, y, z <= 100).
  • Erdvėlaivis turi nugabenti krovinį iš pirmos bazės į N-ąją. Pradiniu momentu erdvėlaivio kuro bakas yra tuščias.

    Rezultatai rašomi į bylą. Joje reikia įrašyti bazių, kuriose erdvėlaivis papildo kuro atsargas skrisdamas optimaliu maršrutu, numerius. Numeriai turi būti rašomi ta tvarka, kuria bazės aplankomos, po vieną numerį į eilutę.

    Į paskutiniąją eilutę įrašykite N-osios bazės numerį.


    Pavyzdys
    Pradiniai duomenys
    Rezultatai
    10  1 10 4  
     5  0  0 0  
    15 10  0 0  
     5  5  5 0 
     1 10  2 0
    1 
    3 
    4

    140. POKERIS. Šis kortų žaidimas dažnai sutinkamas lošimų automatuose. Mes nagrinėsime supaprastintą pokerio variantą. Automatas iš 24 (nuo devynakės iki tūzo) kortų kaladės atsitiktinai išrenka lošėjui penkias kortas. Lošėjas nusprendžia, kurias kortas jis norėtų pasilikti, o kurias – pakeisti. Lošėjo keičiamas kortas automatas vėl įdeda į kaladę ir vėl iš jos atsitiktinai išrenka tiek kortų, kiek jų buvo įdėta.
    Nuo susidariusios kortų kombinacijos priklauso išlošimas. Išlošiančios padėtys yra šios:

    1. Pora – dvi vienodo rango kortos (pavyzdžiui, dvi damos).
    2. Dvi poros (pavyzdžiui, dvi dešimtakės ir du tūzai).
    3. Trejetas – trys vienodo rango kortos.
    4. Iš eilės – visos kortos galima išdėstomos paeiliui pagal rangą (pavyzdžiui, devynakė, dešimtakė, berniukas, dama ir karalius).
    5. Vienos spalvos – visos kortos vienos rūšies (pavyzdžiui, visi kryžiai).
    6. Pilni namai – trejetas ir pora.
    7. Ketvertas – keturios vienodo rango kortos.
    8. Pokeris – visos kortos išdėstomos paeiliui ir yra vienos rūšies.
    Daugeliu atvejų galima sudaryti kelias kombinacijas. Pavyzdžiui, jei turime Ketvertą, galime sudaryti ir Porą ir Trejetą. Tokiu atveju laikykite, kad susidaro tik viena išlošiamoji situacija – ta, kurios numeris (prioritetas) didžiausias.

    Vienas padėtis yra lengviau sudaryti, kitas – sunkiau. Todėl sudarius vienas padėtis išlošiama mažiau pinigų, kitas – daugiau. Yra sudaryta išlošimų lentelė, kurioje nurodyta, kiek pinigų išlošiama susidarius kiekvienai iš aštuonių padėčių.



    Padėties pasitaikymo tikimybė yra galimų skirtingų kortų kombinacijų, kuriose yra norima padėtis, skaičiaus santykis su visų galimų kombinacijų skaičiumi.

    Pavyzdys. Tarkime, jūs pasilikote dvi damas ir du karalius ir norite sužinoti, kokia tikimybė susidaryti Pilniems namams atsitiktinai ištraukus penktą kortą. Kadangi iš 24 kortų kaladės išimtos dvi damos ir du karaliai, tai penktą kortą galime ištraukti 24 – 2 – 2 = 20 būdų, taigi iš viso yra 20 galimų skirtingų kombinacijų. Tačiau Pilni namai susidarys, jei ištraukta korta bus arba dama, arba karalius. Kadangi kaladėje yra dvi damos ir du karaliai, tai bus 2 + 2 = 4 galimos skirtingos kombinacijos, kuriose gali sudaryti Pilnus namus. Taigi tikimybė, kad susidarys Pilni namai bus 4 / 20 = 0,2.



    Išlošimo vidurkis apibrėžiamas kaip išlošiančių padėčių pasitaikymo tikimybių ir atitinkamų išlošimų sandaugų suma.

    Pavyzdys. Tarkime, Jūs pasilikote dvi damas ir du karalius ir susidarius Dviems poroms išlošiate 5 Lt, o susidarius Pilniems namams išlošiate 30 Lt, kitos išlošiančios padėtys šiuo atveju susidaryti negali. Jūs jau paskaičiavote, kad, Pilnų namų susidarymo tikimybė šiuo atveju lygi 0,2. Kadangi likusiose 16 iš 20 galimų kombinacijų yra Dvi poros, tai jų susidarymo tikimybė bus lygi 16 / 20 = 0,8. Taigi tuo atveju, kai pasiliksite anksčiau minėtas keturias kortas, jūsų išlošimo vidurkis bus lygus 0,8 x 5 Lt + 0,2 x 30 Lt = 10 Lt (vidutiniškai galite išlošti 10 Lt).


    Jūsų programa pagal duotas penkias kortas ir išlošimų lentelę turėtų nuspręsti, kurias kortas reikia pasilikti, o kurias pakeisti, kad išlošimo vidurkis būtų didžiausias.

    Pradiniai duomenys įrašyti byloje. Jos pirmose penkiose eilutėse yra automato išrinktų kortų kodai. Kortos koduojamos viena didžiąja raide ir vienu skaičiumi. Raidė nurodo kortos spalvą (Š – širdys, B – būgnai, K – kryžiai, V – vynai). Skaičius nurodo kortos rangą: 1 – devynakę, 2 – dešimtakę, 3 – berniuką, 4 – damą, 5 – karalių, 6 – tūzą. Eilutėse nėra tarpų. Visos kortos skirtingos.

    Kitose aštuoniose eilutėse yra po vieną sveiką skaičių, kuris yra išlošimo suma gaunama susidarius atitinkamai padėčiai kortose.


    Rezultatų byloje turėtų būti penkios eilutės, kiekvienoje kurių yra arba žodis TAIP, jei atitinkamą kortą norima pasilikti, arba žodis NE jei tą kortą norima pakeisti.

    Pavyzdys
    Pradiniai duomenys
    Rezultatai
    K1  
    V1  
    V3  
    B2  
    S6  
    1 
    5 
    10 
    20 
    200 
    100 
    500 
    1000
    TAIP 
    TAIP 
    NE 
    NE 
    NE

    141. DIDELĖ VALSTYBĖ. Terainkognitos valstybę valdo diktatorius. Kaip dažniausiai būna tokiais atvejais, bet kokia tiksli informacija apie valstybę yra slepiama. Diktatorius teigia, kad jo valstybė yra labai didelė ir pateikia rimtų argumentų: Terainkognitą galima sutalpinti į n x n (1 <= n <= 2000) dydžio kvadratinį žemės plotą ir valstybės kontūrai lies visus jo kraštus! Tačiau tikslaus ploto diktatorius pasakyti nenori.

    Žinoma, kad valstybės kontūras yra iškiliojo daugiakampio formos.

    Parašykite algoritmą, kuris apskaičiuotų valstybės plotą.


    Pradinių duomenų nėra. Duomenis apie valstybę programa gali gauti pasinaudodama modulio TERRAINC funkcija valstybė. Ši funkcija turi du pradinius duomenis (realiuosius skaičius) – taško koordinates – ir grąžina loginę reikšmę, parodančią, ar duotas taškas priklauso valstybės teritorijai, ar ne.

    Jei taškas priklauso valstybės sienai, laikoma, kad jie priklauso valstybei.

    Norėdami sužinoti kvadratinio žemės ploto koordinates, kreipkitės į procedūrą dydis. Ji grąžins tris sveikuosius skaičius: apatinio kairiojo kvadrato kampo koordinates bei kvadrato dydį n.

    Pavyzdinį modulį rasite diskelyje. Testavimui bus naudojama kita modulio versija.


    Rezultatą (penkių skaitmenų tikslumu) spausdinkite ekrane.

    142. NEŽINOMAS KODAVIMAS. Duota programa KOD.EXE. Ji dvejetainėje byloje A esančius duomenis užkoduoja ir surašo į bylą B.

    Kaip koduoja programa KOD.EXE, galite sužinoti eksperimentuodami – pateikdami jai savus pradinius duomenis ir analizuodami iš jos gautus rezultatus.


    Yra žinomi tik kodavimo principai:
    Į pradinių duomenų bylą A žiūrima kaip į ištisinę bitų eilę. Bitai skirstomi į vienodo ilgio grupes po 7, 6, 5, 4, 3 arba 2 bitus. Jei paskutinė grupė nepilna, tai jos pabaiga užpildoma dvejetainiais nuliais.

    Kiekviena grupė koduojama atskiru baitu.

    Parašykite programą, kuri iškoduotų duomenis, t. y. iš bylos B gautų bylą C, identišką bylai A.
    Taip pat reikia pateikti aprašymą, iš kurio būtų aišku, kaip Jūs analizavote programą KOD.EXE.

    Kodavimo programa KOD.EXE turi du parametrus. Ja pasinaudoti galima perduodant koduojamos bylos ir bylos, į kurią turi būti rašomi užkoduoti duomenys, vardus. Pavyzdžiui:

    KOD.EXE duom.dat duom.kod

    Testuojama naudojantis bylomis, kurių dydis (užkoduotų) ne daugiau kaip 10000 baitų.


    Pradiniai duomenys ir rezultatai Iškodavimo programa pradinius duomenis (užkoduotą tekstą) turi skaityti iš bylos KOD.DAT. Iškoduotą tekstą ji turi rašyti į bylą KOD.REZ.

    143. LOŠIMAS DISKU. (vykdymo laikas – 5 s. 12000 testų) Lošia dviese. Abu lošėjai sukioja į 6 segmentus suskirstytą žemiau nupieštą diską . Segmentai sužymėti skaičiais nuo 1 iki 6.


    Lošėjai paeiliui sukioja diską per vieną segmentą į kairę arba į dešinę. Lošėjas, pasukęs diską, perskaito jo viršutiniame segmente atsiradusį skaičių n ir jį prideda prie sumos s.

    Lošimo pradžioje s = 0. Lošimas baigiamas, kai s pasiekia sutartą skaičių m (pvz., 1000). Jeigu s = m, tai laimi tas, kuris pasiekė šį skaičių. Jeigu s > m, tai pralaimi tas, kas buvo priverstas viršyti m (t.y. laimėjo tas, kuris priešininkui sudarė tokią situaciją, kad jis nebegalėjo parinkti tokio ėjimo, kad suma neviršytų sutarto skaičiaus).



    Parašykite algoritmą, kuris rastų geriausią ėjimą esant duotai situacijai. Algoritmą užrašykite funkcija, turinčia tokią antraštę:

    function diskas (n, s, m: integer): integer;

    Funkcijos reikšmė yra skaičius, kuris turi atsirasti viršutiniame disko segmente atlikus ėjimą.

    Pastaba. Reikia tik rasti ėjimą, bet jo neatlikti. Ėjimą atliks lošimą valdanti programa, kurios sudaryti nereikia.



    Taip pat aprašykite taisykles (instrukciją) lošėjui kaip parinkti geriausią ėjimą bei pateikite įrodymą, įtikinantį, kad ėjimas, parinktas pagal instrukciją yra geriausias.