Dvylikoji moksleivių informatikos olimpiadaPirmojo etapo uždavinių sąlygos89 klasių grupė |
1 (202). KELIŲ TIESIMAS. (teorinis uždavinys). Paveikslėlyje matote miesto planą. Mieste yra trys nauji mikrorajonai bei pilis. Planuojama užveisti žirgyną ir atidaryti zoologijos sodą. Miesto taryba nori nutiesti po vieną kelią iš kiekvieno mikrorajono į visas tris lankytinas vietą, t.y. iš viso reikės nutiesti 9 kelius. Taip pat ji pageidauja, kad keliai kirstųsi kuo mažesnį skaičių kartų. Kelių ilgis bei tiesumas nesvarbus.
Užduotis. Pasiūlykite miesto tarybai kuo geresnį kelių tiesimo
projektą.
2 (203). POMIDORAI. Žinomas įdomus faktas: tarp neprinokusių pomidorų padėjus keletas raudonų pomidorų, aplink juos esantys žali pomidorai ims nokti greičiau.
Vienoje eilėje sudėta n pomidorų. Laikykime, kad jie sunumeruoti nuo 1 iki n (2<=n<=70). Vienas šių pomidorų yra raudonas. Jo numeris yra m (1<=m<=n). Per pirmąją dieną prinoksta abu šio pomidoro kaimynai. Per kiekvieną tolesnę dieną prinoksta abu kiekvieno raudono pomidoro kaimynai (suprantama, jei jie dar neprinokę). Nepamirškite, kad kraštinis pomidoras turi tik vieną kaimyną.
Užduotis. Parašykite programą, kuri suskaičiuotų, kiek dar liks
neprinokusių pomidorų po d (1<=d<=30) dienų.
Pavyzdys. Aukščiau esantį paveikslą atitiktų šie pradiniai duomenys
9 4 2. Gautas rezultatas turėtų būti lygus 4.
1 pav. Taip atrodė pomidorų eilė pradžioje;
2 pav. Pomidorų eilė praėjus vienai dienai;
3 pav. Pomidorų eilė praėjus dviem dienoms;
3 (204). AR GERAME NAME GYVENSITE?. Nekilnojamo turo agentūra siūlo jums pirkti butą. Agentūroje sužinojote, kad name yra n (1<=n<=100) butų ir m (1<=m<=5) laiptinių. Visose laiptinėse butų skaičius yra vienodas. Kiekvienos laiptinės kiekvieno aukšto aikštelėje yra po k butų. Jums siūlo pirkti butą, kurio numeris nr (1<=nr<=n).
Butai name numeruojami taip kaip įprasta: pirma sunumeruojami pirmos laiptinės butai, po to antros ir t.t. Laiptinėse butai numeruojami iš apačios į viršų.
Užduotis. Parašykite programą, kuri nustatytų
a) kelių tai aukštų namas;
b) kiek butų yra vienoje laiptinėje;
c) kuriame aukšte yra jums siūlomas butas;
Pavyzdžiui, jei pradiniai duomenys yra 24 3 2 6, tai rezultatai turėtų būti: 4 8 3
Paaiškinimas. Pradinių duomenų eilutė reiškia, kad name yra 24 butai, 3 laiptinės, kiekvieno aukšto laiptinės aikštelėje yra po 2 butus, o jums siūlomo buto numeris yra 6.
Iš šių duomenų galite pasakyti, kad namas yra 4 aukštų, kiekvienoje laiptinėje yra po 8 butus, o jums siūlomas butas yra 3 aukšte.
4 (205). ORIENTAVIMOSI VARŽYBOS. (teorinis uždavinys). Paveikslėlyje pateiktas vietovės žemėlapis, kurį sudaro punktai (pažymėti apskritimais) ir keliai tarp jų.. Varžybų dalyviai turi pradėti bėgti iš starto (pradinio punkto), perbėgti kiekvienu keliu po vieną kartą ir pasiekti finišą. Tą patį punktą (netgi starto bei finišo) galima aplankyti kelis kartus. Starto bei finišo punktai nesutampa.
Deja, maketuojant žemėlapį, pasimetė prie punktų buvę užrašai. Maketuotojas
prisiminė tik tiek, kad finišas buvo į vakarus nuo starto. Atidžiai pastudijavus
žemėlapį paaiškėjo, kad vis dėl to vienareikšmiškai galima nustatyti, kur
turėjo būti startas ir kur finišas.
Užduotis. Nurodykite starto bei finišo punktus. Trumpai paaiškinkite
savo atsakymą.
Pastaba. Patogumo dėlei visus punktus sunumeravome atsitiktinai
parinktais skaičiais iš intervalo [1..9].
5 (206). POMIDORAI. Žinomas įdomus faktas: tarp neprinokusių pomidorų padėjus keletas raudonų pomidorų, aplink juos esantys žali pomidorai ims nokti greičiau.
Vienoje eilėje sudėta n pomidorų. Laikykime, kad jie sunumeruoti nuo 1 iki n (4<=n<=200). Trys iš šių pomidorų yra raudoni. Jų numeriai yra m1, m2, m3 (1<=mi<=n). Per vieną dieną prinoksta abu kiekvieno raudono pomidoro kaimynai. Suprantama, kraštinis pomidoras turi tik vieną kaimyną.
Užduotis. Parašykite algoritmą, kuris suskaičiuotų, kiek dar
liks neprinokusių pomidorų po d (1<=d<=30) dienų.
Pastaba. Pradiniuose duomenyse raudonų pomidorų numeriai pateikiami
didėjimo tvarka.
2 pav. Pomidorų eilė praėjus vienai dienai;
3 pav. Pomidorų eilė praėjus dviem dienoms;
Pavyzdys. Šiuos piešinius atitiktų tokie pradiniai duomenys: 19 2 13 15 2, o gautas rezultatas būtų lygus 8.
6 (207). DAUGYBA A LA RUSSE. A la russe tai daugybos algoritmas dviems teigiamiems sveikiesiems skaičiams (pažymėkime juos N ir M) sudauginti. Aprašysime jį. Pradžioje tarpinei sandaugai priskiriamas nulis.
Jei pirmasis daugiklis nelyginis, tuomet antrasis daugiklis pridedamas prie tarpinės sandaugos, jei lyginis tarpinė sandauga nekeičiama. Po to pirmasis daugiklis padalinamas iš dviejų (imama sveikoji dalis), o antrasis padvigubinamas pridedant jį patį prie jo paties.
Veiksmai kartojami. Kai pirmasis daugiklis tampa lygus vienam, veiksmai
atliekami paskutinįjį kartą, o gautoji tarpinė sandauga tampa lygi skaičių
N ir M sandaugai.
Pirmasis daugiklis
|
Antrasis daugiklis
|
Tarpinė sandauga
|
325
162 81 40 20 10 5 2 1 |
6874
13748 27496 54992 109984 219968 439936 879872 1759744 |
6874
6874 34370=6874+27496 34370 34370 34370 474306=34370+439936 474306 2234050=474306+1759744 |
Gauname: 325x6874=2234050;
Toks daugybos algoritmas primena kompiuterio aparatinėje įrangoje (angl.
hardware) realizuotą dvejetainę daugybą.
7 (208). KAS PAĖMĖ PINIGINĘ. (teorinis uždavinys). Vienoje įstaigoje dingo piniginė. Buvo apklausti visi penki tame kabinete buvę asmenys ir gauti tokie parodymai:
EMILIJA: 1. Aš neėmiau;
2. Aš niekada savo gyvenimo nieko nevogiau;
3. Tai padarė Tadas;JUDITA: 1. Aš neėmiau;
2. Mano tėvas labai turtingas ir aš turiu savo piniginę;
3. Rita žino kas tai padarė;DARIUS: 1. Aš nieko nežinau apie vagystę;
2. Su Rita aš susipažinau prieš metus;
3. Tai padarė Tadas;TADAS: 1. Aš nekaltas;
2. Tai padarė Rita;
3. Emilija meluoja sakydama, kad aš tai padariau;RITA: 1. Aš neėmiau;
2. Kalta Judita;
3. Darius gali už mane garantuoti, nes mes su juo draugaujame nuo mažumės;Vėlesnė apklausa leido nustatyti, kad kiekvienas iš penkių asmenų davė po du teisingus ir vieną klaidingą parodymą.
Užduotis. Iš pateiktų apklausos duomenų nustatykite, kuris
asmuo paėmė piniginę. Paaiškinkite savo sprendimą.
8 (209). ĮDOMI SEKA. Seka formuojama tokiu
būdu. Pirmasis sekos narys yra bet kuris nelyginis natūralusis skaičius
didesnis už vienetą. Kiekvienas tolesnis sekos narys lygus:
p div 2, | jei p yra lyginis; |
3p+1, | jei p yra nelyginis; |
čia p yra prieš tai buvęs sekos narys. Seka užbaigiama, kai gaunamas vienetas.
Pavyzdžiui, pirmasis sekos narys lygus 7. Tuomet gaunama tokia
seka:
7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
Spėjama, kad tokia seka visuomet yra baigtinė. Tačiau dar nė vienam
moksleininkui nepavyko to įrodyti.
9 (210). KAS VADAS. n (1<=n<=50)
vaikų stovi ratu. Vienas žaidžiančiųjų pasako skaičių k (2<=k<n).
Norėdami išsirinkti žaidimo vadą, vaikai skaičiuoja šitaip: pirmi (k1)
vaikai lieka stovėti, kasis išeina iš rato, tolesni (k1)
vaikų lieka rate, o kasis vėl iškrenta ir t.t. Vaikui išėjus ratas
susiglaudžia. Skaičiuojama tik pagal laikrodžio rodyklę ir tol, kol lieka
vienas vaikas vadas.
Užduotis. Parašykite programą, kuri nustatytų kas taps vadu,
t.y. rastų to vaiko numerį n vaikų rate. Laikoma, kad vaikai sunumeruoti
pagal laikrodžio rodyklę.
Pavyzdžiui, jei pradiniai duomenys yra 6 2, tai rezultatas turėtų būti: 5.
Paveiksle parodyta kokia tvarka iškris vaikai. Pirmiausia iškritęs vaikas
pažymėtas raide a, antras iškritęs raide b ir t.t.
10 (208). KAS PAĖMĖ PINIGINĘ. (teorinis uždavinys). Vienoje įstaigoje dingo piniginė. Buvo apklausti visi penki tame kabinete buvę asmenys ir gauti tokie parodymai:
EMILIJA: 1. Aš neėmiau;
2. Aš niekada savo gyvenimo nieko nevogiau;
3. Tai padarė Tadas;JUDITA: 1. Aš neėmiau;
2. Mano tėvas labai turtingas ir aš turiu savo piniginę;
3. Rita žino kas tai padarė;DARIUS: 1. Aš nieko nežinau apie vagystę;
2. Su Rita aš susipažinau prieš metus;
3. Tai padarė Tadas;TADAS: 1. Aš nekaltas;
2. Tai padarė Rita;
3. Emilija meluoja sakydama, kad aš tai padariau;RITA: 1. Aš neėmiau;
2. Kalta Judita;
3. Darius gali už mane garantuoti, nes mes su juo draugaujame nuo mažumės;Vėlesnė apklausa leido nustatyti, kad kiekvienas iš penkių asmenų davė po du teisingus ir vieną klaidingą parodymą.
Užduotis. Iš pateiktų apklausos duomenų nustatykite, kuris
asmuo paėmė piniginę. Paaiškinkite savo sprendimą.
11 (211). ŠAŠKĖS. Turime n (3<=n<=10) langelių eilę. Langeliai sunumeruoti nuo 1 iki n iš kairės į dešinę. Ant kiekvieno langelio stovi šaškių krūvelė (nuo 0 iki 10 šaškių). Vienu ėjimu galima sukeisti dviejuose langeliuose esančias šaškių krūveles.
Užduotis. Parašykite programą, kuri perkilnotų šaškių krūveles
taip, kad krūvelių aukščiai būtų sutvarkyti nedidėjančiai. Reikia išspausdinti
ėjimų skaičių bei pačius ėjimus eilės tvarka. Ėjimą nusako sukeičiamų
krūvelių langelių numeriai.
Šį pavyzdį iliustruoja žemiau pateikti piešiniai.
a) Duotoji krūvelė; |
b) Atliktas pirmasis perstatymas; |
c) Atliktas antrasis perstatymas; |
12 (212). ORNAMENTAS. Ornamentas sudarytas iš nxn tamsių ir šviesių kvadratėlių. Naujas ornamentas gaunamas turimą ornamentą paslenkant įvairiomis kryptimis. Galima paslinkti į kairę, į dešinę, į viršų bei į apačią.
Paslenkant ornamentą į kurią nors pusę, visos eilutės (stulpeliai) paslenkami
per vieną poziciją, o nebetelpanti kraštinė eilutė (stulpelis) perkeliama
į priešingą pusę. Paslinkimas iliustruojamas žemiau pateiktuose
paveikslėliuose.
a) Pradinis ornamentas; |
b) Pradinis ornamentas paslinktas į viršų; |
c) Pradinis ornamentas paslinktas į apačią; |
d) Pradinis ornamentas paslinktas į kairę |
e) Pradinis ornamentas paslinktas į dešinę; |
|
|
|
5
KKKAAAD OOOOO .O... ..O.. O..O. OO..O |
O....
.O.O. ..OOO OOOOO ....O |
|
13 (213). VALIUTOS. Daugelio Vakarų
Europos valstybių valiutų kursai yra susieti su euru pastoviu santykiu.
Tuomet santykis tarp atskirų šių valstybių valiutų taip pat pasidaro pastovus.
Duota N valstybių (valstybės sunumeruotos nuo 1 iki N) valiutų santykių
lentelė, kurios i, j langelyje (t. y. i-ame stulpelyje
ir j-oje eilutėje) įrašytas skaičius rodo, kiek i-osios valstybės
valiutos vienetas kainuoja j-osios valstybės valiutos vienetų. Lentelė
neišbaigta, t. y., ne visų valstybių valiutų santykiai žinomi. Vietoj nežinomų
santykių įrašyti nuliai.
Užduotis. Remiantis lentelėje esančiais duomenimis reikia apskaičiuoti
kiek galint daugiau nežinomų santykių, kitaip sakant, reikia kuo daugiau
nulių pakeisti valiutų santykiais. Taigi rezultatas yra pradinė valiutų
santykių lentelė, tik papildyta apskaičiuotais santykiais (kurių santykių
apskaičiuoti neįmanoma, lieka nuliai).
PASTABA: Valiutų santykius aprašykite realiųjų skaičių tipu ir skaičiavimus
su jais atlikite bei rezultatus pateikite neapvalindami.
Pradiniai duomenys
5
0 2 4 0
0
0 1 0 0
0
0.25 0 1 0
0
0 0 1 1
0
0 0 0 0
1
Rezultatai
5
1 2 4 4
0
0.5 1 2 2
0
0.25 0.5 1 1 0
0.25 0.5 1 1 0
0 0 0 0
1
14 (214). BŪRĖJA. Viena būrėja gali išburti ir pasakyti, koks šansas, kad vienas asmuo (pažymėkime jį A1) susitiks su kitu asmeniu (A2). Šis šansas išreiškiamas skaičiumi nuo 1 iki 100 (procentais).
Buriama šitaip: į būrėją kreipęsis asmuo A1 pasako jai savo vardą ir pavardę bei asmens A2 vardą ir pavardę, pavyzdžiui, Jonas Jonaitis ir Janina Petrienė. Visus duomenis (A1 vardą ir pavardę bei A2 vardą ir pavardę) būrėja surašo be tarpų į vieną eilę (didžiosios ir mažosios raidės laikomos vienodomis), pavyzdžiui:
JONASJONAITISJANINAPETRIENĖ
Šitokią eilę sutarsime vadinti pirmąja raidžių grupe.
Antrąją raidžių grupę sudarys kelios raidžių eilės. Šią grupę būrėja formuoja taip: paeiliui ima pirmosios grupės raides ir
Aukščiau pateiktam pirmosios raidžių grupės pavyzdžiui antroji grupė
bei skaičius sk1 bus šitokie:
JONASITPERĖ
JONASIT E
J NA I
NA I
N
32542421211 Tai yra skaičius sk1
Toliau būrėja sudaro skaičių sk2 tokiu būdu: sudeda pirmąjį sk1 skaitmenį su paskutiniuoju ir gautą sumą prilygina skaičiui sk2. Antrąjį sk1 skaitmenį sudeda su priešpaskutiniu ir gautą sumą prirašo prie skaičiaus sk2 galo, trečiąjį skaitmenį sudeda su priešpriešpaskutiniu ir gautą sumą prirašo prie sk2 galo. Šiuos veiksmus kartoja, kol nelieka skaičiaus sk1 skaitmenų arba lieka vienas vidurinysis skaitmuo, šiuo atveju jį prijungia tiesiog prie sk2 galo.
Iš skaičiaus sk2 tokiu pat būdu gaunamas skaičius sk3 ir t. t., kol gautas skaičius tampa mažesnis arba lygus šimtui.
Pavyzdžiui:
32542421211
437544 { 4=3+1, 3=2+1, 7=5+2, 5=4+1, 4=2+2, 4=4 }
8712 { 8=4+4, 7=3+4 , 12=7+5 }
108 { 10=8+2, 8=7+1 }
90 { 9=1+8, 0=0 }
Skaičius 90 ir bus rezultatas. Čia jis reiškia, kad šansas, jog A1
susitiks su A2, yra 90 procentų.
15 (215). ŽAIDIMAS SU LABIRINTU. (Vykdymo laikas iki 20 sek.; procesorius Pentium 133 MHz) Žaidimą sudaro stiklu uždengta kvadratinė plokštelė su joje išraižytu labirintu, kuriame yra rutuliukas. Kadangi plokštelė uždengta stiklu, rutuliukas iš jos negali iškristi. Plokštelė pritvirtinta statmenai prie sienos taip, kad ją galima sukti 90 laipsnių kampu į kairę (prieš laikrodžio rodyklę) arba į dešinę (pagal laikrodžio rodyklę). Sukant plokštelę rutuliukas nejuda (jis fiksuojamas). Atlikus posūkį rutuliukas atleidžiamas, jis krenta žemyn, kol sutinka kliūtį (labirinto sieną) ir jo padėtis vėl fiksuojama.
Užduotis. Duotas nxn dydžio labirintas, rutuliuko
vieta koordinatėmis (x, y) bei posūkio komandų seka, žymima
raidėmis K arba D. Labirinto langeliai numeruojami pradedant apatiniu kairiuoju
kampu nuo 1 (x žymi eilutes, y stulpelius). Parašykite
programą, kuri nustatytų, kurioje vietoje atsidurs rutuliukas atlikus komandų
seką.
Pirmoje eilutėje įrašytas labirinto dydis n (1 <= n <= 1000) bei rutuliuko padėtis du skaičiai x ir y (1 <= x, y <= n). Antroje eilutėje įrašytos komandos raidžių K ir D seka be tarpų (yra bent viena komanda, bendras komandų skaičius neviršija 5000).
Likusiose n eilučių pateiktas pats labirintas: 0 žymi praėjimus,
o 1 sienas.
Pradiniai duomenys |
|
|
10 3 7
DDDKD 1111110000 0011110110 1100001001 1001100000 1101110110 0000001000 1000110000 0000110000 1001001100 1001101111 |
8 3 | 1111110000
0011110110 11****1001 10011***** 110111011* 000000100* 100011000* 000011**** 1001001100 1001101111 |
16 (216). PRISKYRIMO SAKINIAI. (Vykdymo laikas iki 10 sek.; procesorius Pentium 133 MHz). Nagrinėsime priskyrimo sakinius, kurie yra tam tikros, griežtai nusakytos formos (vadinsime ją X forma):
<kintamasis>:=<kintamasis><ženklas><skaičius>;
Čia esantys žymenys reiškia:
<kintamasis> bet koks sveikojo tipo (integer) kintamasis,
kurio vardas yra viena mažoji lotyniškosios abėcėlės raidė;
<ženklas> arba sudėties (+), arba daugybos (*) operacija;
<skaičius> bet koks neneigiamas sveikojo tipo skaičius.
X formos priskyrimo sakinių pavyzdžiai:
x:=y+3;
z:=z*5;
a:=b+0;
Užduotis. Duotas natūralusis skaičius S ir X formos priskyrimo sakinių seka (ją sudaro ne mažiau kaip du sakiniai). Parašykite programą, kuri pašalintų (jei to reikia ir įmanoma) tam tikrus sekos sakinius (išskyrus paskutinįjį jo šalinti negalima), kad įvykdžius likusių sakinių seką paskutiniame sakinyje esančio kintamojo reikšmė būtų lygi S. Jeigu tai galima padaryti keliais būdais, pakanka pasirinkti bet kurį vieną. Visų kintamųjų pradinės reikšmės lygios 1.
Sakinių eilės tvarkos keisti negalima, pavyzdžiui, jeigu pašalinome antrą sakinį, o pirmą ir trečią palikome, tai naujoje sekoje pradžioje turi eiti pirmas, paskui trečias.
Jeigu atlikę pradinę seką (nieko nepašalinę) paskutinio sakinio kintamojo
reikšmę gauname lygią S, tai ta seka gali būti programos vykdymo rezultatu.
SAKINIAI.DAT | SAKINIAI.REZ |
|
12
4 n:=n*2; m:=n+1; n:=n*3; k:=n+6; |
TAIP
1 3 4 |
Atlikę seką paskutiniu sakiniu turime gauti skaičių 12. Jeigu pašalinsime antrą sakinį (kuris šiuo atveju netgi netrukdo), tai matysime, kad toks rezultatas tikrai gaunamas. (atlikus pirmąjį sakinį n reikšmė tampa lygi 2, trečiąjį 6 ir ketvirtąjį k reikšmė tampa lygi 12). |
12
4 n:=n*2; m:=n+1; n:=n*0; k:=n+6; |
NE | Čia vėl turėtume gauti kintamojo k reikšmę lygią 12. Pastebėkime, kad tada n reikšmė turėtų būti 6. Kintamojo n reikšmę keičia trečiasis ir pirmasis sakiniai. Atlikus trečiąjį sakinį jo reikšmė tampa lygi 0, o pirmąjį 2. Kitokių galimybių kintamojo n reikšmei keisti nėra, todėl byloje SAKINIAI.REZ šiuo atveju rašome NE. |
9
4 n:=n*2; n:=n+1; n:=n+2; k:=n+4; |
TAIP
1 2 3 4 |
Šiuo atveju turime paimti visus pradinės sekos sakinius (visais kitais atvejais kintamojo k reikšmė būtų mažesnė už 9). |
17 (217). LENTELĖ (Vykdymo laikas iki 10 sek.; procesorius Pentium 133 MHz). Tarkime, kad turime lentelę, sudarytą iš 4 eilučių ir N stulpelių (N <= 20). Kiekviename lentelės langelyje reikėtų įrašyti po skaitmenį: nulį arba vienetą, kai žinomos kiekvieno stulpelio ir kiekvienos eilutės sumos.
Užduotis. Reikia parašyti programą, kuri užpildytų lentelės langelius
(jeigu tai įmanoma padaryti). Jei galimi keli sprendiniai, reikia pateikti
bet kurį vieną.
Pradinė lentelė (N=4)
? | ? | ? | ? | 1 |
? | ? | ? | ? | 3 |
? | ? | ? | ? | 3 |
? | ? | ? | ? | 4 |
4 | 3 | 3 | 1 |
Rezultatų lentelė
1 | 0 | 0 | 0 | 1 |
1 | 1 | 1 | 0 | 3 |
1 | 1 | 1 | 0 | 3 |
1 | 1 | 1 | 1 | 4 |
4 | 3 | 3 | 1 |
Pradinių ir galutinių duomenų pavyzdžiai
LENT.DAT | LENT.DAT | Paaiškinimas |
4
4 3 3 1 1 3 3 4 |
TAIP
1 0 0 0 1 1 1 0 1 1 1 0 1 1 1 1 |
Sąlygoje duotas pavyzdys |
18 (218). LABIRINTAS Labirintą sudaro kambariai ir perėjimai tarp jų. Perėjimais galima judėti tik nurodyta kryptimi. Labirinte ciklų nėra.
Kiekviename kambaryje yra arba prizas, arba bauda, tai išreiškiama taškais. Keliautojui patekus į kambarį, jei kambaryje yra prizas, taškai pridedami prie keliautojo sąskaitos, o jei kambaryje yra bauda, tai keliautojo sąskaita sumažinama baudos taškais.
Keliautojas gali pasirinkti, kuriame kambaryje jis nori pradėti judėti labirintu, ir kuriame kambaryje jis sustos; tačiau keliautojas privalo aplankyti bent vieną labirinto kambarį.
Užduotis. Parašykite programą, kuri duotam labirintui surastų
didžiausią taškų skaičių, kurį gali surinkti keliautojas (jei visuose kambariuose
yra tik baudos, tai didžiausiais taškų skaičius bus neigiamas). Pradiniu
momentu sąskaitoje yra nulis taškų.
LABIR.DAT | LABIR.REZ | Paaiškinimas |
7
1 1 5 -1 1 5 10 2 1 2 50 1 7 -10 1 4 -2 1 3 -3 0 |
51 | Keliautojo maršrutas: 3, 1, 5, 4.
|
4
-1 0 -7 1 4 -2 2 1 2 -3 0 |
-1 | Keliautojo maršrutas: 1 . |
19 (219).CENTAI Tarkime, kad 200x metais visų pajamos tiek išaugs, kad teks atsisakyti 1 ir 2 centų monetų. Tegul prekių kainos būtų skaičiuojamos cento tikslumu, bet visa mokėjimo suma turi būti apvalinama 5 centų tikslumu: 1 ir 2 centai keičiami į 0 centų; 3, 4, 6 ir 7 centai keičiami į 5 centus; 8 ir 9 centai keičiami į 10 centų.
Į nedidelę parduotuvę, prekiaujančią įvairiomis smulkmenomis, atėjęs taupus pirkėjas nori nusipirkti prekių, kuo daugiau išlošdamas iš centų apvalinimo. Tam jis prekes perka dalimis, į vieną pirkinį (krepšelį) dėdamas tokias prekes, kad iš apvalinimo gautų didžiausią naudą.
Užduotis. Reikia parašyti programą, kuri pirmiausia apskaičiuotų
maksimalų pelną (išlošį), o tada tam pelnui rastų minimalų pirkimų (ėjimų
pro kasą) skaičių. Gali būti situacija, kai pelno negaunama, o prarandama
kažkokia pinigų suma. Tokiu atveju pelnas bus neigiamas.
CENTAI.DAT | CENTAI.REZ | |
|
3
2 2 3 |
2 1 |
2 pavyzdys | 1
1023 |
-2 1 |
20 (220). ŽVAIGŽDUTĖS Tarkime, kad turime labai ilgą eilę simbolių, išdėstytų tokia tvarka: viena žvaigždutė, vienas tarpas, dvi žvaigždutės, du tarpai, trys žvaigždutės, trys tarpai ir t. t.
Užduotis. Reikia parašyti programą, kuri nustatytų, koks simbolis
yra kojoje pozicijoje.
Pastaba: Kadangi pradiniai duomenys įvedami iš klaviatūros, o
rezultatai rašomi ekrane, tai pageidautina tvarkingai ir vaizdžiai apiforminti
dialogą su kompiuteriu.
21 (221). PAŽINTYS. Į renginį turėjo atvykti N asmenų. Asmenys įvardyti skaičiais nuo 1 iki N.
Yra žinoma, kurie asmenys su kuriais buvo pažįstami iki renginio pradžios. Du asmenys renginio metu būtinai susipažins, jei jie turi arba renginio metu įsigijo bendrą pažįstamą.
Renginio organizatoriai, gerai žinodami kas ką, pažįsta buvo tikri, kad renginio metu visi asmenys susipažins. Tačiau vienas asmuo į renginį neatvyko ir todėl visiems susipažinti nepavyko.
Užduotis. Parašykite programą, kuri nustatytų, koks asmuo neatvyko
į renginį.
PAZINTYS.DAT | PAZINTYS.REZ |
7
2 2 7 2 1 4 2 4 5 4 2 3 6 7 2 3 6 2 4 5 2 1 4 |
4 |
22 (222). ŽAIDIMŲ AUTOMATAS. Vieno žaidimų
automato skyde yra dešimt langelių, kiekviename kurių matomas vienas skaitmuo
(nuo 0 iki 9). Po langeliais yra mygtukai, kurie sunumeruoti nuo 1 iki
10.
Kiekvienas mygtukas valdo tam tikrus langelius. Jų sąryšiai pateikti
lentelėje.
Mygtuko nr. | Mygtuko valdomi langelių numeriai |
|
4, 5, 8, 9, 10 |
|
9, 10 |
|
8, 10 |
|
3, 5, 9, 10 |
|
6, 8, 9 |
|
2, 3, 4, 5, 8, 10 |
|
1, 2, 4, 6, 8, 9, 10 |
|
10 |
|
7, 8, 10 |
|
5, 7, 9, 10 |
Paspaudus bet kurį iš mygtukų, jo valdomuose langeliuose esantys skaitmenys padidėja vienetu (tuo atveju, kai langelyje buvo matomas skaitmuo 9, jis tampa 0).
Užduotis. Parašykite programą, kuri duotai langelių skaitmenų
sekai surastų trumpiausią mygtukų paspaudimų seką (jei tik tokia egzistuoja),
kurią atlikus visų langelių skaitmenys taptų vienodi.
Pastabos:
1. Jeigu sprendinių (trumpiausių sekų) yra keletas, tai pakanka pateikti
bet kurią vieną.
2. Jeigu iš pat pradžių visi skaitmenys vienodi, tai atsakymas turi
būti GALIMA, o mygtukų paspaudimų skaičius lygus nuliui.
|
AUTOMAT.REZ | Paaiškinimas |
4 4 4 4 4 4 4 4 4 3 | GALIMA
1 0 0 0 0 0 0 0 1 0 0 |
Užtenka paspausti tik 8-tą mygtuką |
0 0 0 0 0 0 0 9 9 7 | GALIMA
3 0 1 1 0 0 0 0 1 0 0 |
Paspaudę 2, 3 ir 8-tą mygtukus langeliuose gausime visus nulius |
23 (223). LENTA. Stačiakampė lenta, kurios ilgis N, plotis M, buvo padalinta lygiagrečiomis lentos kraštams tiesėmis į N*M vienetinio dydžio kvadratėlių. Dalis kvadratėlių buvo išpjauti. (Gali būti, kad dėl to lenta tapo nebevientisa, o susidedanti iš kelių dalių.) Norima likusią lentą supjaustyti į vientisus dviejų vienetinių kvadratėlių dydžio stačiakampius.
Užduotis. Parašykite programą, kuri suskaičiuotų, kokį didžiausią
tokių stačiakampių skaičių galima išpjauti iš šios skylėtos lentos.
|
LENTA.REZ |
|
3 4
4 2 4 2 3 2 2 1 3 |
3 | Vienas iš galimų pjaustymo variantų
(išpjauti langeliai pažymėti pilka spalva) |
4 4
5 1 1 3 3 2 2 4 4 1 4 |
4 | Vienas iš galimų pjaustymo variantų
(išpjauti langeliai pažymėti pilka spalva) |
24 (221). PAŽINTYS. Į renginį turėjo atvykti N asmenų. Asmenys įvardyti skaičiais nuo 1 iki N.
Yra žinoma, kurie asmenys su kuriais buvo pažįstami iki renginio pradžios. Du asmenys renginio metu būtinai susipažins, jei jie turi arba renginio metu įsigijo bendrą pažįstamą.
Renginio organizatoriai, gerai žinodami kas ką, pažįsta buvo tikri, kad renginio metu visi asmenys susipažins. Tačiau vienas asmuo į renginį neatvyko ir todėl visiems susipažinti nepavyko.
Užduotis. Parašykite programą, kuri nustatytų, koks asmuo neatvyko
į renginį.
PAZINTYS.DAT | PAZINTYS.REZ |
7
2 2 7 2 1 4 2 4 5 4 2 3 6 7 2 3 6 2 4 5 2 1 4 |
4 |
ab+ac+3b+3c = a(b+c)+3(b+c) = (a+3)(b+c)
Bendru atveju skaidymas dauginamaisiais yra gana sudėtingas uždavinys,
tačiau atskirais atvejais (kaip pateikta žemiau sąlygoje) jis gali būti
gana lengvai išsprendžiamas.
Dviejų ar daugiau kintamųjų supaprastintus pirmojo laipsnio daugianarius,
kurių visi nariai (vienanariai) turi teigiamus sveikuosius koeficientus,
vadinsime B klasės daugianariais.
A klasės daugianarių pavyzdžiai:
2ab+4ac+af+3ef+ce
a2+b2+bc
xy
B klasės daugianarių pavyzdžiai:
3a+f+2g
a+78b
x
ab+b | Vienanaris b nėra antrojo laipsnio |
ab-bc | Koeficientas prieš bc nėra teigiamas |
ab+abc | Vienanaris abc nėra antrojo laipsnio |
ab+1,5xy | Koeficientas prieš xy nėra sveikasis skaičius |
2a2+b2 | Koeficientas prie a2 nėra lygus vienetui |
Reiškinių, kurie nepriklauso daugianarių B klasei, pavyzdžiai:
b+b | Daugianaris nėra supaprastintas |
a-c | Koeficientas prieš c nėra teigiamas |
ab+c | Vienanaris ab nėra pirmojo laipsnio |
Užduotis. Parašykite programą, kuri duotąjį A klasės daugianarį
išskaidytų dviejų dauginamųjų, kurių kiekvienas yra B klasės daugianaris,
sandauga.
|
DAUGIN.REZ |
|
2
ab ac |
1
a b+c |
ab+ac=a(b+c) |
2
ab a2 |
1
a a+b |
ab+a2=a(a+b) |
6
xy zx tx 25uy 25uz 25ut |
1
x+25u y+z+t |
xy+zx+tx+25uy+25uz+25ut =
(x+25u)(y+z+t) |
2
a2 b2 |
0 | a2+b2=???????? |
26 (225). SKAIČIAI (Vykdymo laikas iki
20 sek.; procesorius Pentium 133 MHz).
Duota N (1 <= N <= 10) sveikųjų skaičių bei dar vienas sveikasis
skaičius S. Reikia nustatyti, kuriuos duotus skaičius sudėjus galima gauti
nurodytą skaičių S (jei tai įmanoma).
Užduotis. Reikia parašyti programą, kuri iš duotų sveikųjų skaičių
rastų tokį rinkinį, kad jų suma būtų lygi sveikajam skaičiui S. Jeigu yra
keli galimi sprendiniai, reikia pateikti bet kurį vieną. Jeigu nurodytos
sumos negalima gauti, tuomet reikia apie tai pranešti.
1389 = 1202 + 79 + 100 + 8
Jeigu nurodytos sumos negalima gauti, tuomet po lygybės rašykite žodį NEGALIMA.
Pastaba: Kadangi pradiniai duomenys įvedami klaviatūra, o rezultatai
rašomi ekrane, tai pageidautina tvarkingai ir vaizdžiai apiforminti dialogą
su programos vartotoju. Programos gale parašykite kreipinį Readln.