71
Dr. J. P. Kazicko programavimo konkursų užduočių rinkinys

Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Embed Size (px)

Citation preview

Page 1: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dr. J. P. Kazicko

programavimo

konkursų užduočių

rinkinys

Page 2: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

1997 m. užduotys Pirmojo turo užduotys Pavyzdys: 129 vienas du devyni

-13 minus vienas trys

1. (2 balai) Klaviatūra įvedamas sveikasis skaičius. Jo skaitmenis reikia atspausdinti ekrane žodžiais.2. (4 balai) Pirkėjas turi dešimt banknotų. Jis nori pirkti prekę, tačiau privalo sumokėti be grąžos. Tekstiniame duomenų faile vienoje eilutėje surašyta dešimt (10) sveikųjų skaičių (turimi banknotai) ir prekės kaina (taip pat sveikasis skaičius). Reikia nustatyti, ar už prekę galima sumokėti turimais banknotais. Jei taip, tai ekrane spausdinti turimus banknotus, prekės kainą, lygybės ženklą ir pasirenkamus banknotus, skiriamus sudėties ženklu (pakanka vieno iš galimų sprendimų). Jei ne, tai spausdinti turimus banknotus, prekės kainą, lygybės ženklą ir pranešimą "Negalima sumokėti". Duomenų faile yra daug tokių eilučių. Programa turi atlikti nurodytą analizę su kiekvienos eilutės duomenimis.

Pavyzdys: 4 15 3 64 2 13 1 6 15 25 2511 2 3 4 5 6 7 8 9 10 25

Rezultatai: 4 15 3 64 2 13 1 6 15 25 251 = Negalima sumokėti.

1 2 3 4 5 6 7 8 9 10 25 = 2+3+4+6+103. (6 balai) Turime stačiakampę lentelę NxM. Tai dvimatis masyvas A(N, M). Reikia suformuoti dvejetainį masyvą B(N, M), sudarytą tik iš vienetukų ir nuliukų. Čia bi,j = 1, kai masyvo A elementas ai,j yra didesnis už visus galimus savo kaimynus arba bent du jo kaimynai yra nuliai. Kitais atvejais bi,j = 0.Elemento ai,j kaimynais yra tie elementai, kurių bent vienas indeksas skiriasi vienetu nuo ai,j atitinkamo indekso. Pradinė lentelė yra surašyta duomenų faile. Čia pirmoji eilutėje yra N ir M reikšmės. Toliau yra N eilučių, kurių kiekvienoje yra po M skaičių. Reikia išvesti į ekraną lentele suformuotą masyvą B.

Pavyzdys: 3 4 Rezultatai:

15 -5 0 111 1 1 0 1

4 6 0 58 0 1 0 1

15 -6 5 7 1 0 0 0

4. (12 balų) Duota N automobilių M techninių rodiklių. Reikia išrinkti geriausius automobilius pagal kiekvieną rodiklį atskirai. Automobilis geriausias pagal rodiklį, jeigu rodiklio reikšmė yra mažiausia. Gali būti ne vienas toks automobilis. Reikia sudaryti sąrašą automobilių, kurie neturi nei vieno geriausio rodiklio. Koks absoliučiai geriausias automobilis (turi daugiausiai geriausių rodiklių)?Duomenys surašyti faile. Skaičius M yra pirmoje eilutėje. Toliau yra N eilučių, kurių kiekviena saugo vieno automobilio duomenis: automobilio valstybinis numeris, o toliau M realių skaičių. Rezultatus parodyti ekrane.

Pavyzdys: Rezultatai:4 Rodiklis1: AHM194AKC125 15 21 45 10 Rodiklis2: AAA155AAA155 55 3 5 6 AHM194AHM194 12 3 5 7 Rodiklis3: AAA155

AHM194Rodiklis4: AAA155Neturi nei vieno geriausio rodiklio: AKC125Absoliučiai geriausi automobiliai, turintys po 3 rodiklius:AAA155 AHM194

1

Page 3: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

5. (25 balai) Parašyti programą, kuri nustato dėmės dydį stačiakampyje tinklelyje. Dėmė - tai grupė užpildytų iš eilės einančių tinklo langelių. Tinklelis vaizduojamas kaip NxN lentelė (dvimatis masyvas). Tokio masyvo bet kurio elemento kaimynais yra laikomi tie, kurių bent vienas indeksas skiriasi vienetu. Skaičiai N ir M įvedami klaviatūra. Reikia sugeneruoti tinklelyje dėmes: užrašyti masyvo atsitiktinėse vietose M kartų skaičių (M turi būti mažesnis už NxN). Skaičių M rašyti į masyvą, jeigu toje vietoje dar jis nėra užrašytas. Likusios masyvo vietos užpildomos nuliais.Dėmių paieška. Klaviatūra įvedamos langelio koordinatės. Jeigu tas langelis nepriklauso dėmei, tai dėmės dydis lygus nuliui (0). Jeigu tas langelis priklauso dėmei, tai skaičiuojamas dėmės dydis, kuris lygys dėmę sudarančių langelių kiekiui. Išrinkta dėmė žymima vienetukais. Duomenų ir rezultatų tinklelius išvesti į failą.

Pavyzdys: jeigu N = 6, M = 12, Rezultatai gali būti tokie:

Pradinis tinklelis Kai koordinatės: 3 ir 4, Dėmė: 4

12 12

12

12 12 12

12 12

12 12 12 12

12 12

1

12 1 1

12 1

12 12 12 12

1998 m. užduotys Pirmojo turo užduotys

U1 (iki 45 balų). Kauno mieste yra daug (< = 10) troleibusų maršrutų ir daug (<= 100) stotelių. Duomenys surašyti tekstiniame faile ‘Stotys.dat’ eilutėmis. Kiekvienos eilutės pirmose 1-30 pozicijų parašytas stotelės pavadinimas, toliau maršrutų, kurių troleibusai stoja toje stotelėje, numeriai, skiriami tarpais. Maršrutai sunumeruoti sveikais teigiamais skaičiais, bet nebūtinai iš eilės.

Reikia parašyti dialoginę programą, kuri:

A. Pateiktų ekrane duomenis apie transporto sistemą mieste /25 balai/:

A1. Kiek mieste yra stotelių; /1 balas/ A2. Kiek mieste yra maršrutų; /2 balai/ A3. Nurodytos stotelės duomenis (maršrutų numerius); /1 balas/ A4. Nurodyto maršruto duomenis (stotelių pavadinimus); /2 balai/ A5. Stotelės, aptarnaujančios daugiausiai maršrutų, pavadinimą, o jeigu tokių yra keletas, tai visas, kartu nurodant maršrutų skaičių; /4 balai/ A6.. Maršruto, kuris apima daugiausiai stotelių, numerį, o jeigu tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos stotelės sudaro vieningą transporto schemą, t.y. ar yra galimybė su persėdimais ar be jų patekti iš bet kurios stotelės į bet kurią kitą. Jeigu taip nėra, tai suskirstyti stoteles į nepersidengiančias grupes pagal priklausomybę atskiroms transporto zonoms. /10 balų/

B. Patartų keleiviui, kaip nuvažiuoti iš stotelės S1 į stotelę S2 (nurodomi pavadinimai klaviatūra). Jeigu negalima, pranešti “NEGALIMA”, kitaip nurodyti kelionę su persėdimais arba be jų, pavyzdžiui, tokia forma:

NUO stotelės pavadinimas IKI stotelės pavadinimas MARŠRUTAS Nr. Maršruto numeris.

Sąrašas užbaigiamas eilute, kurioje turi būti žodis “PABAIGA”. Pasirenkate vieną iš siūlomų dviejų B1 arba B2:

B1. Jeigu yra keletas važiavimo variantų, nurodomas tik vienas bet kuris. /15 balų/ B2. Jeigu yra keletas važiavimo variantų, nurodomas pigiausias, t.y. iš visų galimų važiavimų variantą pateikti su mažiausiu persėdimų skaičiumi. /20 balų/

Dialogo organizavimas programoje /iki 5 balų/. Pageidautina paruošti dialogą pilnai programai. Programos vartotojui pasirinkus Jūsų nerealizuotą veiksmą, ekrane pasirodo pranešimas “Dar nepadaryta”

2

Page 4: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

U2 (20 balų). Reikia parašyti programą, kuri atliktų duotų šachmatų turnyrų analizę. Kiekviename iš turnyrų dalyvavo skirtingas žaidėjų skaičius. Kiekvieno turnyro rezultatai surašyti į atskirą kvadratinę lentelę. Joje kiekvienam žaidėjui skirta eilutė, kurioje eilės tvarka surašyti rezultatai su pirmuoju, antruoju, trečiuoju ir t.t. žaidėjais. Jeigu pralaimėjo, tai - 0 (nulis), laimėjo - 2 (du), lygiosios - 1 (vienas). Langelyje ‘pats su savimi’ užrašomas nulis.

Visų turnyrų lentelės yra tekstiniame faile ‘Lentele.dat’. Pirma eilutė skirta pirmojo turnyro dalyvių skaičiui. Toliau yra pirmojo turnyro lentelė eilutėmis, kur skaičiai skiriami tarpais. Po to seka eilutė su antrojo turnyro dalyvių skaičiumi ir eilutės su to turnyro lentele. Taip toliau surašyti visi duomenys iki failo galo.

Nurodyti kiekvieno turnyro žaidėjus, kurie laimėjo pirmąją, antrąją ir trečiąją vietas: nurodyti žaidėjų numerius ir surinktų taškų skaičių. Surinkus vienodai taškų, vietos skiriamos pagal tarpusavio susitikimų rezultatus. Esant ir šiuo atveju vienodiems rezultatams, vietų neskirti: programa nurodo tų žaidėjų numerius ir surinktus taškusš

Kiekviena programa papildomai įvertinama balais už:

Programavimo kultūrą. Tai programos rašymo stilius (visame tekste laikomasi vienodų teksto išdėstymo ir rašymo taisyklių, programa turi antraštę komentarų formoje (užduoties pavadinimas U1 arba U2, variantas A1, A2 ir t.t., autoriaus pavardė ir vardas, tie patys vardai visoje programoje rašomi vienodai) ir teksto rašybos taisyklės (bendri reikalavimai tekstui, kaip pvz., po skirtukų palikti bent vieną tarpo simbolį). Už tai bus skiriama iki 25% programos sudėtingiausio varianto balų.

Programos technologiškumą. Tai programos struktūriškumas (užduoties skirstymas į atskirus veiksmus, kurie apiforminami paprogramėmis), gebėjimas išvengti globalinių parametrų, sukurtų duomenų struktūrų efektyvumas. Už tai bus skiriama iki 25% programos sudėtingiausio varianto balų.

Maksimalus galimas balų skaičius: U1 = 65 balai, U2 = 35 balai.

Antrojo turo užduotys

U1 (iki 45 balų). Turime Lietuvos tarpmiestinių autobusų maršrutus (<= 20), kurie jungia įvairius Respublikos miestus (<= 100). Duomenys apie maršrutus surašyti tekstiniame faile ‘Miestai.dat’ eilutėmis. Kiekvienam maršrutui skiriama viena eilutė: maršruto kodas (bet koks sveikas teigiamas skaičius, užrašytas pirmose 5 eilutės pozicijose), toliau miestų pavadinimai (kiekvienam iš jų skiriant po 15 eilutės pozicijų). Vardai rašomi pradedant didžiaja raide. Pavyzdžiui:

235 Kaunas Panevėžys Klaipėda Palanga Mažeikiai 15 Vilnius Ukmergė Panevėžys

Reikia parašyti dialoginę programą, kuri:

A. Pateiktų ekrane duomenis apie maršrutus / 25 balai/:

A1. Kiek yra maršrutų; / 1 balas / A2. Kiek miestų yra aptarnaujama; / 2 balai / A3. Nurodyto maršruto duomenis (miestų pavadinimus); / 1 balas / A4. Nurodytą miestą aptarnaujančius maršrutus (numerius) / 2 balai / A5. Miesto, per kurį eina daugiausiai maršrutų, pavadinimą ir maršrutų skaičių, o jeigu tokių miestų yra keletas, tai išvardinti visus;/ 4 balai / A6. Maršruto, kuris aptarnauja daugiausiai miestų, numerį, o jeigu tokių yra keletas, tai išvardinti visus tokius; / 5 balai / A7. Pasakytų, ar visi miestai sudaro vieningą transporto schemą, t.y. ar yra galimybė su persėdimais ar be jų patekti iš bet kurio miesto į bet kurį kitą. Jeigu taip nėra, tai suskirstyti miestus į nepersidengiančias grupes pagal priklausomybę atskiroms transporto zonoms. / 10 balų /

B. Patartų keleiviui, kaip nuvažiuoti iš miesto S1 į miestą S2 (nurodomi pavadinimai klaviatūra). Jeigu negalima, pranešti “NEGALIMA”, kitaip nurodyti kelionę su persėdimais arba be jų, pavyzdžiui, tokia forma:

NUO miesto pavadinimas IKI miesto pavadinimas MARŠRUTAS Nr. Maršruto numeris.

Sąrašas užbaigiamas eilute, kurioje turi būti žodis “PABAIGA”. Pasirenkate vieną iš siūlomų dviejų B1 arba B2:

B1. Jeigu yra keletas važiavimo variantų, nurodomas tik vienas bet kuris. /15 balų/ B2. Jeigu yra keletas važiavimo variantų, nurodomas pigiausias, t.y. iš visų galimų važiavimų variantą pateikti su mažiausiu persėdimų skaičiumi. /20 balų/

Dialogo organizavimas programoje /iki 5 balų/. Pageidautina paruošti dialogą pilnai programai. Programos vartotojui pasirinkus Jūsų nerealizuotą veiksmą, ekrane pasirodo pranešimas “Dar nepadaryta”.

3

Page 5: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

U2 (20 balų). Reikia parašyti programą, kuri atliktų duotų krepšinio atrankinių turnyrų analizę. Kiekviename iš turnyrų dalyvavo skirtingas komandų skaičius. Kiekvieno turnyro rezultatai buvo surašyti į atskirą kvadratinę lentelę. Lentelėje kiekvienai komandai skirta eilutė, kurioje eilės tvarka surašyti rezultatai su pirmaja, antraja, trečiaja ir t.t. komandomis: įmestų taškų skaičius. Skaičiavimuose už pergalę skiriami - 2 (du) taškai, o už pralaimėjimą - 0 (nulis) taškų. Langelyje ‘pats su savimi’ užrašomas nulis.

Visų turnyrų lentelės yra tekstiniame faile ‘Lentele.dat’. Pirma eilutė skirta pirmojo turnyro komandų skaičiui. Toliau yra pirmojo turnyro lentelė eilutėmis, kur skaičiai skiriami tarpais. Po to seka eilutė su antrojo turnyro dalyvių skaičiumi ir eilutės su to turnyro lentele. Taip toliau surašyti visi duomenys iki failo galo.

Nurodyti kiekvienam turnyrui komandas, kurios laimėjo pirmąją, antrąją ir trečiąją vietas: nurodyti komandų numerius ir surinktų taškų skaičių. Surinkus vienodai taškų, vietos skiriamos pagal tarpusavio susitikimų rezultatus. Esant ir šiuo atveju vienodiems rezultatams, vietų neskirti: programa nurodo tų komandų numerius ir surinktus taškus.

Kiekviena programa papildomai įvertinama balais už:

Programavimo kultūrą. Tai programos rašymo stilius (visame tekste laikomasi vienodų teksto išdėstymo ir rašymo taisyklių, programa turi antraštę komentarų formoje (užduoties pavadinimas U1 arba U2, variantas A1, A2 ir t.t., autoriaus pavardė ir vardas, tie patys vardai visoje programoje rašomi vienodai) ir teksto rašybos taisyklės (bendri reikalavimai tekstui, kaip pvz., po skirtukų palikti bent vieną tarpo simbolį). Už tai bus skiriama iki 25% programos sudėtingiausio varianto balų.

Programos technologiškumą. Tai programos struktūriškumas (užduoties skirstymas į atskirus veiksmus, kurie apiforminami paprogramėmis), gebėjimas išvengti globalinių parametrų, sukurtų duomenų struktūrų efektyvumas. Už tai bus skiriama iki 25% programos sudėtingiausio varianto balų.

Maksimalus galimas balų skaičius: U1 = 65 balai, U2 = 35 balai.

2000 m. užduotys

Pirmojo turo užduotysU1. /iki 36 balų/. Tekstiniame faile turime duomenis apie garsiausius pasaulio zooparkus. Duomenys surašyti tekstiniame faile ‘Zoo.dat’ eilutėmis. Parko aprašo pirmoji eilutė skirta zooparko pavadinimui (1-20 pozicijos) ir toliau parašytam gyvūnų rūšių skaičiui. Kitose eilutėse turimi gyvūnai pagal rūšis. Kiekvienos eilutės pirmose 1-20 pozicijų parašytas gyvūno rūšies pavadinimas, toliau kiek turima tos rūšies suaugusių gyvūnų ir kiek jauniklių. Pasibaigus vieno zooparko duomenims, rašomi kito zooparko duomenys tokia pačia tvarka: aprašo pirmoji eilutė skiriama parko pavadinimui ir rūšių skaičiui, toliau gyvūnų aprašai.

Reikia parašyti dialoginę programą:

Meniu Balai Veiksmas

Rūšys 5 Atsako kiek gyvūnų rūšių yra pasaulio zooparkuose.

Kiek 2 Atsako, kiek pasaulio zooparkuose yra saugoma gyvūnų.

Zoo 2 Atsako, kiek zooparkų yra pasaulyje.

Kuris 2 Atsako, kuris zooparkas turi daugiausiai gyvūnų rūšių ir kiek jų turi.

Parkas 2 Atsako, kuris zooparkas turi daugiausiai gyvūnų ir kiek jų turi.

Prieauglis 2 Atsako, kuriame zooparke yra daugiausiai prieauglio ir kiek jų yra.

Didelis-Mažas 2 Atsako, kiek pasaulio zooparkuose yra suaugusių gyvūnų ir kiek prieauglio.

Vardas 3 Paklausia zooparko pavadinimo ir parodo parke esančių gyvūnų sąrašą.

Gyvūnas 3Paklausia gyvūno vardo ir parodo sąrašą zooparkų, kuriuose tas gyvūnas saugomas ir kiek jų ten yra.

Visi 3Parodo visų gyvūnų sąrašą be pasikartojančių pavadinimų: gyvūnas, suaugusių skaičius, prieauglis.

Pabaiga Programos darbo pabaiga.

Meniu darbas organizuojamas vienu iš dviejų būdų:

Numeruotas pavadinimų sąrašas. Vartotojas nurodo pasirinkto pavadinimo numerį. Vertė 5 balai.

4

Page 6: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Pavadinimų sąrašas, kuriame pasirinkimas organizuotas žymeklio valdymo klavišais. Vertė 10 balų.

Pageidautina paruošti dialogą pilnai programai. Programos vartotojui pasirinkus Jūsų nerealizuotą veiksmą, ekrane pasirodo pranešimas “Dar nepadaryta”.

Jeigu programa parašyta kaip nuosekli veiksmų seka, tuomet balai už programos organizavimą neskiriami.U2. /12 balų/. Diskretinėje plokštumoje N x M langelių yra nupiešti K stačiakampių. Žinoma, kad N £ 50 ir M £ 50. Duomenų faile ‘Duom.dat’ pirmoje eilutėje parašytas stačiakampių skaičius K ir reikšmės N, M. Kitose eilutėse duomenys apie stačiakampius. Viena eilutė skirta vienam stačiakampiui. Kiekvienoje iš jų parašyta: kairiojo viršutinio stačiakampio kampo koordinatės x, y, stačiakampio plotis ir aukštis.

Reikia parašyti programą, kuri:

Surastų didžiausio ploto stačiakampį (eilės numeris pagal sąrašą faile, plotas, koordinatės, plotis ir aukštis). Vertė 2 balai.

Surastų kvadratiškiausią stačiakampį, t.y. tokį, kurio forma artimiausia kvadratui. Jeigu tokių yra keletas, atsakymui pateikti tik vieną. Spausdinamas eilės numeris pagal sąrašą faile, plotas, koordinatės, plotis ir aukštis. Vertė balai

Suranda, kuris plokštumos langelis įeina į daugiausiai stačiakampių. Vertė 5 balai.

Kiek plokštumos langelių nepriklauso nei vienam iš stačiakampių? Vertė 3 balai.

Antrojo turo užduotys

U1. /iki 36 balų/. Duota tekstiniame faile ‘leidin.dat’ informacija apie leidinius:leidinio kodas(1-3poz.), leidinio pavadinimas (4-23poz.), vieno mėnesio leidinio kaina. Faile ‘prenuma.dat’ yra tokia informacija: prenumeratoriaus adresas (1-20 poz.), leidinio kodas (21-23poz.), leidnešio pavardė (24-43 poz.), laikotarpio pradžia (1..12), laikotarpio ilgis (1..12), leidinių kiekis.

Meniu Balai Veiksmas

Kaina 2 Suskaičiuoja ir parodo kiekvieno prenumeratoriaus kiekvieno užsakymo kainą.

Sąrašas 4Paklausia mėnesio numerio ir atspausdina kiekvienam leidnešiui šio mėnesio nešiojamos prenumeratos sąrašus pagal adresus(adresas, leidinio pavadinimas, leidinių kiekis).

Tiražas 4 Paklausia mėnesio numerio ir suskaičiuoja kiekvienam leidiniui šio mėnesio tiražą.

Mpinigai 4 Paklausia mėnesio numerio ir suskaičiuoja kiekvienam leidiniui šio mėnesio pinigus.

Kiekiai 4Paklausia mėnesio numerio ir atspausdina kiekvienam leidnešiui šio mėnesio skirtingų leidinių kiekius.

Metai 6 Nustato, kuris leidnešys nešiojo daugiausiai leidinių per metus ir parodo jo pavardę.

Bpinigai 3 Nustato, kiek surinkta pinigų per metus ir parodo rezultatą.

Laidiniai 4 Nustato, kokie skirtingi leidiniai užsakyti ir parodo jų pavadinimus.

Mėnesiai 5 Nustato, kuriam mėnesiui buvo užsakyta daugiausiai leidinių ir parodo jo numerį.

Meniu darbas organizuojamas vienu iš dviejų būdų:

Numeruotas pavadinimų sąrašas. Vartotojas nurodo pasirinkto pavadinimo numerį. Vertė 5 balai. Pavadinimų sąrašas, kuriame pasirinkimas organizuotas žymeklio valdymo klavišais. Vertė 10 balų.

Pageidautina paruošti dialogą pilnai programai. Programos vartotojui pasirinkus Jūsų nerealizuotą veiksmą, ekrane pasirodo pranešimas "Dar nepadaryta".

Jeigu Jūsų programa parašyta kaip nuosekli veiksmų seka, tuomet balai už programos organizavimą neskiriami.U2. /12 balų/. Tekstiniame faile ‘atkarpos.dat’ duotos atkarpos galų taškų koordinatės, išreikštos sveikaisiais skaičiais:

Surasti ilgiausią atkarpą ir atspausdinti jos koordinates. Vertė 2 balai. Surasti kuriame ketvirtyje yra daugiausiai atkarpų. Vertė 3 balai Surasti kiek atkarpų kerta koordinačių ašis. Vertė 2 balai. Surasti, kiek yra grupių atkarpų, kurios lygiagrečios tarpusavyje. Vertė 5 balai.

Kiekviena programa papildomai įvertinama balais už (už tai bus skiriama iki 25% maksimalaus varianto balų įvertinimo):

Programavimo kultūrą. Tai programos rašymo stilius (visame tekste laikomasi vienodų teksto išdėstymo ir

5

Page 7: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

rašymo taisyklių, programa turi antraštę komentarų formoje (užduoties pavadinimas U1 arba U2, autoriaus pavardė ir vardas, tie patys vardai visoje programoje rašomi vienodai) ir teksto rašybos taisyklės (bendri reikalavimai tekstui, kaip pvz., po skirtukų palikti bent vieną tarpo simbolį).

Programos technologiškumą. Tai programos struktūriškumas (užduoties skirstymas į atskirus veiksmus, kurie apiforminami paprogramėmis), gebėjimas išvengti globalinių parametrų, sukurtų duomenų struktūrų efektyvumas.

Maksimalus galimas balų skaičius: U1 = 45 balai, U2 = 15 balai.

6

Page 8: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

2001 m. užduotys Pirmojo turo užduotysU1. /10 balų/. Reikia parašyti programą, kuri žaistų žaidimą "Dalybos". Žaidime dalyvauja žaidėjas ir kompiuteris. Žaidėjas turi stengtis surinkti daugiau taškų, nei kompiuteris. Pradžioje įvedamas natūrinis skaičius N ir sudaromas pradinis skaičių rinkinys, kurį sudaro visi skaičiai nuo 1 iki N.

Iš skaičių rinkinio žaidėjas renkasi bet kurį skaičių dar turintį daugiklių (žaidėjas negali pasirinkti skaičiaus, kuris neturi daugiklių!). Žaidėjas gauna taškų skaičių, lygų išrinktam skaičiui, o kompiuteris gauna šio skaičiaus dar neišrinktų daugiklių sumą. Žaidėjui pasirinkus skaičių, skaičius ir jo daugikliai pašalinami iš pradinio skaičių rinkinio.

Pradžioje visi pirminiai skaičiai kaip daugiklius turi save patį ir vienetą. Tačiau, išrinkus pirmąjį skaičių, pirminių skaičių aibė "užsidaro", nes iš daugiklių aibės iš karto išbraukiamas vienetas. Pabaigoje kompiuteris prisideda visus neišrinktus skaičius.

Pavyzdys: Sakykim, N = 16. Jei žaidėjas pasirenka 6, kompiuteris gauna visus skaičiaus 6 daugiklius: 3, 2, 1. Tolesniam pasirinkimui lieka tik 4 ir 5. Kadangi skaičiaus 4 daugikliai (2 ir 1) ir skaičiaus 5 daugiklis (1) jau yra pašalinti iš pradinio skaičių rinkinio, tai žaidėjas neturi iš ko rinktis ir kompiuteris laimi 15:6. Žaidėjas pirmiausia turėjo pasirinkti 5, po to 4, po to 6, tada laimėtų 15:6. U2/22 balai/. Tekstiniame faile 'GenMedis.dat' - vienos senos šeimos vyrų geneologinis medis. Failo eilutėje - tėvo ir jo sūnų vardai iki eilutės galo, kiekvienam vardui skiriant 10 pozicijų. Kiekvienas vardas prasideda didžiąja raide. Naudojamos tik lotyniško raidyno raidės. Eilučių skaičius faile iš anksto nėra žinomas. Eilučių tvarka faile - laisva. Visų vyrų vardai skirtingi. Reikia parašyti programą, kuri surastų ir parodytų ekrane:

Kurie vyrai neturėjo vaikų? /2 balai/ Kiek vaikų turėjo nurodytas asmuo? /2 balai/ (Vardas nurodomas klaviatūra) Kas buvo nurodyto asmens tėvas? /3 balai/ (Vardas nurodomas klaviatūra) Kas buvo nurodyto asmens anūkai? /5 balai/ (Vardas nurodomas klaviatūra)

Kas yra giminės pradžia? /10 balų U3. /iki 28 balų/. Tekstiniame faile turime duomenis apie valstybių svarbiausius miestus. Duomenys surašyti tekstiniame faile ‘Miestai.dat’ eilutėmis. Kiekvienam miestui skirtos dvi eilutės. Pirmoje eilutėje - miesto pavadinimas (1-20 pozicijos) ir valstybės pavadinimas (21-40 pozicijos). Kiekvienas pavadinimas prasideda didžiąja raide. Antroje eilutėje - duomenys apie miestą: gyventojų skaičius (tūkstančiais), plotas (kvadratiniais kilometrais), registruotų automobilių skaičius, policininkų skaičius.

Reikia parašyti dialoginę programą, kuri vartotojui teikyų paslaugas, surašytas lentelėje:

Meniu Balai Veiksmas

Miestų skaičius 2 Rasti, kiek iš viso yra sąraše miestų ir koks bendras gyventojų skaičius

Miestas 3 Rasti miestą, kuriame daugiausiai gyventojų

Saugus gyvenimas

3Rasti miestą, kuriame saugiausia gyventi: policininkų skaičius tūkstančiui gyventojų didžiausias

Valstybė 5 Rasti, kiek iš viso sąraše valstybių

Saugi valstybė 5Rasti valstybę, kurioje saugiausia gyventi: policininkų skaičius tūkstančiui gyventojų didžiausias

Meniu darbas organizuojamas vienu iš dviejų būdų:

Numeruotas pavadinimų sąrašas. Vartotojas nurodo pasirinkto pavadinimo numerį. /5 balai/ Pavadinimų sąrašas, kuriame pasirinkimas organizuotas žymeklio valdymo klavišais. /10 balų/

Pageidautina paruošti dialogą pilnai programai. Programos vartotojui pasirinkus Jūsų nerealizuotą veiksmą, ekrane pasirodo pranešimas “Dar nepadaryta”.

Jeigu programa parašyta kaip nuosekli veiksmų seka, tuomet balai už programos organizavimą neskiriami.

Antrojo turo užduotys U1-1. /10 balų/. Klaviatūra įvedami du sveikieji teigiami skaičiai. Skaičiai gali turėti iki 50 skaitmenų. Reikia parašyti programą kuri duotus skaičius sudėtų ir rezultatą parodytų ekrane. U1-2. /15 balų/. Klaviatūra įvedami du sveikieji skaičiai. Skaičiai gali turėti iki 50 skaitmenų, kurių kiekvienas turi ženklą '+' arba '-'. Reikia parašyti programą kuri duotus skaičius sudėtų ir rezultatą parodytų ekrane. U2. /22 balai/. Tekstiniame faile 'GenMedis.dat' - vienos senos šeimos vyrų geneologinis medis. Failo eilutėje - tėvo ir jo sūnų vardai iki eilutės galo, kiekvienam vardui skiriant 10 pozicijų. Kiekvienas vardas prasideda didžiąja raide. Naudojamos tik lotyniško raidyno raidės. Eilučių skaičius faile iš anksto nėra žinomas. Eilučių tvarka faile - laisva. Visų vyrų vardai skirtingi. Reikia parašyti programą, kuri surastų ir parodytų ekrane:

7

Page 9: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Kiek buvo vyrų, neturėjusių vaikų? /2 balai/ Kiek brolių turėjo nurodytas asmuo? /2 balai/ (Vardas nurodomas klaviatūra) Kas buvo nurodyto asmens tėvas? /3 balai/ (Vardas nurodomas klaviatūra) Kas buvo nurodyto asmens pirmos eilės pusbroliai? /5 balai/ (Vardas nurodomas klaviatūra)

Kas yra tolimiausi nurodyto asmens palikuonys? /10 balų/ (Vardas nurodomas klaviatūra) U3. /iki 28 balų/. Tekstiniame faile turime duomenis apie valstybių svarbiausius miestus. Duomenys surašyti tekstiniame faile ‘Miestai.dat’ eilutėmis. Kiekvienam miestui skirtos dvi eilutės. Pirmoje eilutėje - miesto pavadinimas (1-20 pozicijos) ir valstybės pavadinimas (21-40 pozicijos). Kiekvienas pavadinimas prasideda didžiąja raide. Antroje eilutėje - duomenys apie miestą: gyventojų skaičius (tūkstančiais), plotas (kvadratiniais kilometrais), registruotų automobilių skaičius, policininkų skaičius.

Reikia parašyti dialoginę programą, kuri vartotojui teikyų paslaugas, surašytas lentelėje:

Meniu Balai Veiksmas

Tankis 2Rasti vidutinį gyventojų tankį miestuose (bendras gyventojų skaičius / bendras miestų plotas)

Skruzdėlynas 3 Rasti miestą, kuriame didžiausias gyventojų tankis

Turtingas miestas 3 Rasti miestą, kuriame tūkstančiui gyventojų tenka daugiausiai automobilių

Gyventojai 5 Rasti valstybę, kurioje daugiausiai gyventojų

Valstybių miestai 5 Pateikti valstybių sąrašą, išvardijant miestus ir jų duomenis

Meniu darbas organizuojamas vienu iš dviejų būdų:

Numeruotas pavadinimų sąrašas. Vartotojas nurodo pasirinkto pavadinimo numerį. /5 balai/ Pavadinimų sąrašas, kuriame pasirinkimas organizuotas žymeklio valdymo klavišais. /10 balų/

Pageidautina paruošti dialogą pilnai programai. Programos vartotojui pasirinkus Jūsų nerealizuotą veiksmą, ekrane pasirodo pranešimas “Dar nepadaryta”.

Jeigu programa parašyta kaip nuosekli veiksmų seka, tuomet balai už programos organizavimą neskiriami.

Kiekviena programa papildomai įvertinama balais už (skiriama iki 25% maksimalaus varianto balų įvertinimo):

Programavimo kultūrą. Tai programos rašymo stilius (visame tekste laikomasi vienodų teksto išdėstymo ir rašymo taisyklių), programa turi antraštę komentarų formoje (užduoties pavadinimas U1, U2 arba U3, autoriaus pavardė ir vardas, tie patys vardai visoje programoje rašomi vienodai) ir teksto rašybos taisyklės (bendri reikalavimai tekstui, kaip pvz., po skirtukų palikti bent vieną tarpo simbolį).

Programos technologiškumą. Tai programos struktūriškumas (užduoties skirstymas į atskirus veiksmus, kurie apiforminami paprogramėmis), gebėjimas išvengti globalinių parametrų, sukurtų duomenų struktūrų efektyvumas.

2002 m. MOKSLEIVIŲ PROGRAMAVIMO KONKURSO pirmojo turo užduotys 1 uždavinys: GEOMETRINĖS FIGŪROS. /65 taškai/. Tekstiniame faile 'DuomU1.txt' turime duomenis apie iškilais geometrines figūras (trikampius, keturkampius, penkiakampius, ...) ir apskritimus. Duomenys apie vieną figūrą surašyti vienoje eilutėje tokia tvarka: figūros vardas (6 simboliai), toliau pagal laikrodžio rodyklę surašytos figūros kampų koordinatės:

FigurosVardas x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 ...

Minimalus figūros kampų skaičius - 3, maksimalus - 10.Apskritimas faile aprašomas taip:

FigurosVardas x1 y1 R

Maksimalus figūrų skaičius faile - 100.

Failo 'DuomU1.txt' pavyzdys:

Tr1 1.5 -5.5 5 -1.4 8.5 -5.2Aps3 5.5 -5.5 10

8

Page 10: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Kt4 -3.5 -0.5 -3.5 5.4 2.4 5.4 2.4 -0.5

Reikia parašyti dialoginę programą, kuri ekrane pateiktų informaciją apie figūras:

Meniu Taškai VeiksmasKokiuIrKiek 4 Rasti kokių ir kiek yra figūrųMaxPerimetras 8 Rasti didžiausią perimetrą turinčios figūros vardą ir perimetrąMaxPlotas 8 Rasti didžiausią plotą turinčios figūros vardą ir plotąKiekStacTrikampiu 10 Rasti stačiųjų trikampių, įbrėžtų į apskritimus, kiekį (tikslumas: 0,000001)KiekKvadratu 10 Rasti kvadrtų, apibrėžtų apie apskritimus, kiekį (tikslumas: 0,000001)

InfoFiguruGrupė 12

Pateikti informaciją apie pageidaujamą figūrų grupę atskirose eilutėse tokia seka (nurodoma grupės kampų skaičius, pvz: 5; apskritimams - 0)

figūrų kiekis; kiek yra lygiakraščių figūrų (tikslumas: 0,000001) (apskritimams: figūrų

kiekis); bendras figūrų perimetras (apskritimams: bendras apskritimų ilgis);

bendras figūrų plotas (apskritimams: bendras apskritimų plotas). Programos darbas organizuojamas meniu principu (5 taškai). Jeigu programa parašyta kaip nuosekli veiksmų seka, tuomet taškai už programos organizavimą neskiriami

2 uždavinys: 8 VALDOVĖS. /35 taškai/. Valdovės gali kirsti bet ką, kas yra toje pačioje eilutėje, tame pačiame stulpelyje arba toje pačioje įstrižainėje. Šachmatų lentoje galima išdėstyti 8 valdoves taip, kad jos viena kitos nekirstų. Sudarykite programą, kuri surastų visus galimus tokio valdovių išdėstymo variantus. Suskaičiuokite jų kiekį. Atsakymus pateikite schematizuotoje šachmatų lentoje ir įrašykite į tekstinį failą.

Atsakymo varianto pavyzdys:

1 2 3 4 5 6 7 81 V - - - - - - -2 - - - - - - V -3 - - - - V - - -4 - - - - - - - V5 - V - - - - - -6 - - - V - - - -7 - - - - - V - -8 - - V - - - - -

MOKSLEIVIŲ PROGRAMAVIMO KONKURSO antrojo turo užduotys

1 uždavinys: OLIMPIADA. /40 taškų/. Tekstiniame faile 'Rezultat.txt' surašyti olimpiados slidinėjimo rungties rezultatai. Kiekvienoje failo eilutėje yra: pavardė (20 simbolių), vardas (10 simbolių), šalis (10 simbolių), starto numeris (sveikasis skaičius), rezultatas (realusis skaičius). Duomenys surašyti starto numerių eilės tvarka. Kitame tekstiniame faile 'Anuliuot.txt' yra sportininkų, kurių rezultatai anuliuoti dėl dopingo vartojimo, sąrašas: pavardė (20 simbolių), vardas (10 simbolių), šalis (10 simbolių). Parašyti programą, kuri surastų ir parodytų ekrane:

Kelių šalių sportininkai dalyvavo šioje slidinėjimo rungtyje? /5 taškai/ Kurių šalių sportininkai nevartojo dopingo? /4 taškai/ Penkias pirmąsias vietas užėmusius slidininkus (pavardė, vardas, šalis) /8 taškai/ Po du geriausiai pasirodžiusius kiekvienos šalies sportininkus (pavardė, vardas, rezultatas) /8 taškai/ Nurodytos šalies (įvedama klaviatūra) geriausiai pasirodžiusį sportininką (paverdė vardas) /5 taškai/

Programos darbas organizuojamas meniu principu /5 taškai/. Jeigu programa parašyta kaip nuosekli veiksmų seka, tuomet taškai už programos organizavimą neskiriami.

2 uždavinys: MOZAIKA. /60 taškų/. Turime daug vienodo dydžio kubelių, kurių kiekvienas šonas nudažytas kokia nors spalva: r (raudona), z (žalia), g (geltona). Kubeliai paberiami ant stalo ir sustumdomi taip, kad gulėtų vienu sluoksniu ir sudrytų stačiakampį NxM.

Padaryti kubelių generatorių, kuris nuspalvintų kubelius ir juos sudėtų ant stalo NxM stačiakampiame plote. Čia N - eilučių skaičius, o M - stulpelių skaičius. Kubelių iš viso turi būti NxM. Čia 1?N?20 ir 1?M?30. N ir M įvedami klaviatūra.

9

Page 11: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Surasti didžiausią vienos spalvos plotą, kuriam priklauso visi kaimyniniai kubeliai, susieti ta pačia spalva viršuje ir apačioje. Kubelio kaimynu laikomas tas kubelis, kuris su juo liečiasi bent vienu tašku. Viršutinis spalvotas plotas ir apatinis spalvotas plotas laikomi vienu plotu, jeigu turi bent vieną kubelį, kurio viršus ir apačia tos pačios nagrinėjamos spalvos.

Ekrane vieną šalia kitos parodyti viršutinę ir apatinę stačiakampio puses. Surasto didžiausio vienos spalvos ploto langelius pažymėti žvaigždute *. Apačioje parašyti, iš kelių langelių sudarytas tas plotas: atskirai viršuje ir apačioje. Parašyti bent vieno kubelio, jungiančio tuos plotus (ta pati spalva viršuje ir apačioje) koordinates: eilutės numerį ir stulpelio numerį.

Sugeneruoto lauko ir rezultato pavyzdys, kai N = 6 ir M = 10:

1 2 3 4 5 6 7 8 9 10 * * * * * * * * * * * * * * * * * * * *

123456

1 2 3 4 5 6 7 8 9 10 * * * * * * * * * * * * * * * * * * * *

Didziausia plota sudaro virsuje 20 ir apacioje 20 langeliu. Langelis: 5 eil., 3st.

Tekstiniame ekrane spalvotą langelį galima atvaizduoti kaip tarpo simbolį (tuščias langelis) arba * (žvaigždutę, kai langelis išrinktas), spausdinamą reikiamos spalvos fone.

Kiekviena programa papildomai įvertinama balais už (skiriama iki 25% maksimalaus varianto balų įvertinimo):

Programavimo kultūrą. Tai programos rašymo stilius (visame tekste laikomasi vienodų teksto išdėstymo ir rašymo taisyklių), programa turi antraštę komentarų formoje (užduoties pavadinimas U1, U2 arba U3, autoriaus pavardė ir vardas, tie patys vardai visoje programoje rašomi vienodai) ir teksto rašybos taisyklės (bendri reikalavimai tekstui, kaip pvz., po skirtukų palikti bent vieną tarpo simbolį).

Programos technologiškumą. Tai programos struktūriškumas (užduoties skirstymas į atskirus veiksmus, kurie apiforminami paprogramėmis), gebėjimas išvengti globalinių parametrų, sukurtų duomenų struktūrų efektyvumas.

10

Page 12: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

1 uždavinys: TRIKAMPIS IR TAŠKAI. /10 taškų/. Duotos plokštumoje esančio trikampio koordinatės x1, y1, x2, y2, x3, y3 ir taškų koordinatės x ir y. Nustatyti, kiek taškų priklauso trikampiui. Duomenų failo 'Trik.txt' pirmoje eilutėje yra parašytos trikampio kampų koordinatės ir taškų skaičius n. Tolesnėse eilutėse surašytos taškų koordinatės x ir y. Vienoje eilutėje gali būti kelių taškų koordinatės.

Ekrane parašyti, kiek taškų priklauso trikampiui. Jeigu nei vienas taškas nepriklauso trikampiui, ekrane parašyti skaičių 0 (nulis).

Trik.txt Ekranas 1 1 20 5 15 25 91 1 3 3 -2 5 2 10 16 2020 6 15 4 15 5 15 3

5

2 uždavinys: AUTOMOBILIAI. /40 taškų/.

Firmos darbuotojai darbo reikalais naudojasi firmos automobiliais, Kai kuriais automobiliais pakaitomis važinėja du darbuotojai, tačiau nei vienas iš darbuotojų nesinaudoja dviem automobiliais. Informacija apie automobilius ir jais važinėjančius darbuotojus surašyta tekstiniuose failuose. Kiekvienoje failo 'Auto1.txt' eilutėje yra: darbuotojo pavardė ir vardas (30 simbolių), naudojamos mašinos markė (20 simbolių) ir valstybinis numeris (6 simboliai). Kiekvienoje failo 'Auto2.txt' eilutėje yra: mašinos valstybinis numeris (6 simboliai), pagaminimo data (metai ir mėnuo - sveikieji skaičiai), rida, t.y. nuvažiuoti tūkstančiai kilometrų (realusis skaičius). Visi duomenys yra teisingi ir abiejuose failuose jų yra tiek, kiek reikia.

2003 m. balandžio mėn. firma planuoja parduoti senus ir susidėvėjusius automobilius, t.y. tuos, kurie yra nuvažiavę virš 200 tūkst. kilometrų arba jų amžius bus virš 10 metų. Vietoje jų bus nupirkti nauji automobiliai.

Parašyti programą, kuri surastų ir parodytų ekrane:

Kiek automobilių šiuo metu turi firma?Kelių skirtingų markių automobiliais važinėja firmos darbuotojai?Kiek automobilių reikia nurašyti?Kiek darbuotojų pradės važinėti naujais automobiliais?Tris darbuotojus (pavardė, vardas), kurie važinėja seniausiais automobiliais.Kas važinėja (pavardė, vardas) seniausiu nurodytos markės (įvedama klaviatūra) automobiliu?

3 uždavinys: STAČIAKAMPIAI. /30 taškų/. Languotame popieriaus lange nubraižyti stačiakampiai. Stačiakampiai neturi bendrų kraštinių ir pilnai užima tam tikrą lapo langelių skaičių. Rasti, kiek lape yra stačiakampių ir koks didžiausio iš jų plotas (užimamų langelių skaičius).

Duomenys.

Tekstiniame faile 'Lapas.txt' pirmoje eilutėje užrašyta lapo išmatavimai langeliais (n x m):1 £ n £ 100 - lapo aukštis;1 £ m £ 100 - lapo plotis.

Toliau faile eilutėmis surašyti skaitmenys be tarpų: 1 (vienetukai) arba 0 (nuliukai), aprašantys stačiakampius: 1-tas, kai langelis priklauso kuriam tai stačiakampiui, 0-kas, kai nepriklauso jokiam stačiakampiui.

111 000000000111 0000 11 0000000000 11 0000000000 11 0000 111111 000000 111111 000000 111111 0 111 000000000 111 0000 11111 0000000 11111 0000000 11111 0000000000000000

Rezultatas ekrane.

Stačiakampių kiekis: 5Didžiausio stačiakampio plotas: 18

4 uždavinys: RATAS. /20 taškų/. Ratu stovi N žmonių. Kiekvienas žmogus turi eilės numerį. Eilės numeriai yra nuoseklūs nuo 1 iki N. Pradedant nuo K-ojo numerio, einant laikrodžio rodyklės krypimi pašalinamas kas M-asis žmogus. Pašalinus žmogų, ratas susitraukia. Po to, pradedant nuo pašalinimo vietos ir einant laikrodžio rodyklės kryptimi vėl pašalinamas M-asis žmogus. �alinimo procesas tęsiasi, kol pašalinami visi žmonės. Išveskite žmonių pašalinimo tvarką.

Duomenys yra tekstiniame faile 'Ratas.txt'. Pirmasis eilutės skaičius - tai N reikšmė, antrasis eilutės skaičius - tai K 12

2003 m. užduotys

Page 13: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

2004 m. užduotys MOKSLEIVIŲ PROGRAMAVIMO KONKURSO užduotys

1 uždavinys: AUDIO SIGNALAI . Audio signalas gali būti saugomas kaip sveikųjų skaičių seka. Šie skaičiai rodo signalo stiprumą nuosekliais laiko intervalais. Signalą iškraipantis triukšmas šiek tiek pakeičia tų skaičių reikšmes.

Signalo "išlyginimo" metu triukšmas pašalinamas tokiu būdu: kiekvienas skaičius keičiamas jo ir dviejų jam gretimų skaičių vidurkiu (vidutinės reikšmės sveikąja dalimi). Pirmas ir paskutinis skaičiai atitinkamai keičiami dviejų pirmų arba dviejų paskutinių skaičių vidurkiu.

Duomenų faile "Duom1.txt" yra n (0<n<100) audio signalų sudarančios skaičių sekos. Kiekviena seka sudaryta iš k (1<k<100) sveikųjų skaičių ir užrašyta vienoje failo eilutėje, skaičiai skiriami tarpais. Pirmoje failo eilutėje yra n ir k reikšmės, atskirtos tarpais.

Išveskite į ekraną "išlygintus" signalus atitinkančias skaičių sekas atskirose eilutėse.

Pavyzdys:

Duom1.txt Ekranas 3 54 7 3 5 88 9 7 8 65 4 6 7 6

5 4 5 5 68 6 6 7 74 5 5 6 6

2 uždavinys: SVARAI. SenojiDidžiosios Britanijos piniginė

sistema, kuri egzistavo iki antrojo pasaulinio karo, buvo sudaryta iš trijų rūšių piniginių vienetų: svarų sterlingų, šilingų ir pensų. 1 svaras sterlingų turėjo 20 šilingų, o 1 šilingas - 12 pensų. Jų žymėjimui buvo naudojamos 3 dešimtainės reikšmės atskirtos taškais. Pavyzdžiui, užrašas 5.2.8 reiškė 5 svarus sterlingų, 2 šilingus ir 8 pensus.

Parašykite programą, kuri sugebėtų atlikti sudėties ir atimties veiksmus šioje piniginėje sistemoje. Duomenys yra tekstiniame faile "Duom2.txt", kur vienos eilutės struktūra yra tokia: piniginė suma, išreikšta svarais sterlingų, šilingais ir pensais, operacijos ženklas ir antroji tokio pat formato piniginė suma. Atsakymus išveskite į ekraną.

Pavyzdys:

Duom2.txt Ekranas 5.2.8.+.5.2.80.0.10.+.0.19.51.0.0 - 0.0.10

5.2.8.+.5.2.8 = 10.5.40.0.10.+.0.19.5 = 1.0.31.0.0 - 0.0.10 = 0.19.2

3 uždavinys:

MIESTAS . Esame mieste, kurio gatvės sudaro kvadratinį tinklelį. Mieste yra tam tikras skaičius gėlių parduotuvių. Visos parduotuvės išdėstytos gatvių kampuose. viename iš gatvės kampų stovi vyras ir galvoja, ar nepadovanoti žmonai gėlių. Bet vyras yra alkanas ir vedęs jau daugelį metų, todėl gėles pirks tik tuo atveju, jei iki artimiausios parduotuvės reikės eiti ne daugiau kaip 5 kvartalus. Tačiau mieste vyksta gatvių remonto darbai, ir kai kurie kvartalai nepraeinami. Kad nevaikščioti veltui, vyras skambina į miesto savivaldybės informacijos tarnybą ir klausia, ar toli nuo esamo taško yra gėlių parduotuvė. Jei netoji, tai kaip į ją pasiekti. Parašykite programą, kuria galėtų naudotis savivaldybės informacijos tarnybos darbuotojas.

Duomenys tekstiniame faile "Duom3.txt" išdėstyti tokia tvarka: pirmoji eilutė - matricos dydis (vienas skaičius ≤ 50), vyro koordinatės (du skaičiai); antroji ir tolimesnės eilutės - pati miesto matrica. Matricoje duomenys yra simboliai. Kvartalus skiria gatvės, kurios pažymėtos taškais. Vieną kvartalo kraštinę žymi 3 simboliai: pirmas gatvės kampas (G - yra gėlių parduotuvė, 0 - nėra gėlių parduotuvės), kliūtis (0 - nėra, 1 - yra), antras gatvės kampas (G - yra gėlių parduotuvė, 0 - nėra gėlių parduotuvės). Rezultatas turėtų būti atsakymas, ar yra tokia parduotuvė, iki kurios ne daugiau kaip 5 kvartalai. Jei yra tokia parduotuvė, tai reikia pažymėti bent vieną kelią iki jos. Rezultatą parodykite ekrane.

Pastabos. Praėjimas viena kvartalo kraštine laikomas kvartalo įveikimu. Negalima vaikščioti kiemais, nes ten gali būti plėšikų. Sankryžas galima kirsti tik stačiu kampu.

Pavyzdys:

13

Page 14: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Duom3.txt Ekranas 11 11 9G00.000.000010.010.010G00.010.010...........G00.010.010010.010.010G00.010.010...........000.000.000010.010.010000.000.000

Parduotuvė yra už 3 kvartalųG00.000.000010.010.010G00.010.010...........G00.010.010010.010.010K00.010.010K..........KKKKKKKKK00010.010.K10000.000.K00

Kiekviena programa papildomai įvertinama

balais už (skiriama iki 25% maksimalaus varianto balų įvertinimo):

Programavimo kultūrą. Tai programos rašymo stilius (visame tekste laikomasi vienodų teksto išdėstymo ir rašymo taisyklių), programa turi antraštę komentarų formoje (užduoties pavadinimas U1, U2 arba U3, autoriaus pavardė ir vardas, tie patys vardai visoje programoje rašomi vienodai) ir teksto rašybos taisyklės (bendri reikalavimai tekstui, kaip pvz., po skirtukų palikti bent vieną tarpo simbolį).

Programos technologiškumą. Tai programos struktūriškumas (užduoties skirstymas į atskirus veiksmus, kurie apiforminami paprogramėmis), gebėjimas išvengti globalinių parametrų, sukurtų duomenų struktūrų efektyvumas.

14

Page 15: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

2005 m. užduotysSuvalkijos programuotojų konkurso užduotys U1. Skaičiai. Skaičiai gali būti užrašyti ne tik mums labiau įprastais arabiškais skaitmenimis, bet ir romėniškais skaitmenimis. Skaičiai nuo 1 iki 10 užrašomi romėniškais skaitmenimis taip: I, II, III, IV, V, VI, VII, VIII, IX, X.

Parašykite programą, kuri skaičiuotų eilutėje užrašytų skaičių romėniškais skaitmenimis sumą. Gretimi skaičiai skiriami vienu tarpu, skaičių reikšmės yra intervale nuo 1 iki 10. Duomenys įvedami iš tekstinio failo ’Pirmas.txt’. Pirmoje failo eilutėje yra užrašytas analizuojamų eilučių kiekis. Rezultatai išvedami į ekraną. Rezultatuose spausdinama pradinę eilutę atitinkanti išraiška arabiškais skaitmenimis ir už lygybės gautas atsakymas.

Pirmas.txt Rezultatų pavyzdys

3II III VI I

V IX X

IV

2 + 3 + 6 + 1 = 12

5 + 9 + 10 = 24

4 = 4

U2. Prekės. Kindziulis

turi P pinigų (1 £ P £ 20000). Parduotuvėje prekės sudėliotos į N lentynų (1 £ N £ 50). Kiekvienos prekės kaina yra užrašyta ant pakuotės. Kindziulis iš kiekvienos lentynos ima tik vieną kaip galint brangesnę prekę, už kurią gali sumokėti. Po to pereina prie kitos lentynos. Jeigu nei už vieną tos lentynos prekę Kindziulis negali sumokėti, tai taip pat pereina prie kitos lentynos. Kiek prekių Kindziulis išsirinko, kiek jam dar liko pinigų?

Duomenys surašyti tekstiniame faile ‘Antras.txt’. Pirmoje eilutėje parašytas turimas pinigų skaičius P ir lentynų skaičius N. Toliau eilutėmis kiekvienos lentynos prekių kainos. Eilutės pirmasis skaičius yra prekių skaičius lentynoje, toliau – prekių kainos. Visi skaičiai yra sveikieji.

Rezultatus rodyti ekrane. Pirmasis skaičius – kiek prekių nupirks Kindziulis, o antrasis – kiek dar liko pinigų.

Antras.txt Rezultatų pavyzdys

1000 43 15 360 85 2 1 145 99 3004 700 600 900 8002 8 1

3 332

5 32 5 61 143 5 6 8

1 0

U3. Daugiakampiai. Duota n iškilių daugiakampių (trikampiai, keturkampiai, penkiakampiai, ...) viršūnių koordinatės (x,y) išdėstytos pagal laikrodžio rodyklę. Daugiakampis turi m viršūnių, kur 3 £ m £ 10.

Parašykite programą kuri rastų:

a) kiek yra daugiakampių, kurių kiekvieno atskirai visos kraštinės vienodos;

b) didžiausio ploto daugiakampį ir suskaičiuotų jo perimetrą;

c) didžiausio ploto kvadratą ir suskaičiuotų jo perimetrą;

Skaičiavimus atlikti 0.1 tikslumu.

Duomenų tekstiniame faile ‘Trecias.txt’ pirmoje eilutėje užrašytas sveikasis skaičius reiškia daugiakampių skaičių n (1 £ n £ 1000). Kitose n eilutėse yra užrašyti daugiakampių duomenys: daugiakampio pavadinimas (6 simboliai), tarpo simbolis, viršūnių skaičius m ir viršūnių koordinatės (realūs skaičiai) (x1,y1), (x2,y2), ... .

Ekrane spausdinkite skaičiavimų rezultatus nurodytu formatu (žiūr. Rezultatų pavyzdys).

15

Page 16: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Trecias.txt Rezultatų pavyzdys

6Ketur1 4 1 1 3 4 6 4 6 1

Trik1 3 8 –1 8 3 11 –1

Penk1 5 8 4 8 7 11 11 14 11 14 4

Sesia1 6 0 5 0 9 4 12 8 12 11 8 11 5Ketur2 4 2 6 2 10 6 10 6 6

K3 4 -3.5 1 –5 4 –2 5 0 3.5

a) Daugiakampių su vienodomis krastinėmis: 1

b) Sesia1, plotas = 65.0, perimetras = 32.0c) Ketur2, plotas = 16.0, perimetras = 16.0

Žemaitijos programuotojų konkurso užduotys U1. Laikas. Iš Kuršėnų važiuoja autobusai į įvairius Europos miestus. Žinomas kiekvieno autobuso išvykimo mėnuo, diena, valanda, minutė ir kiek valandų bei minučių užtruko kelionė. Reikia suskaičiuoti, kurį mėnesį, dieną, valandą ir minutę kiekvienas autobusas atvyko į paskirties vietą. Žinome, kad visos kelionės prasidėjo ir baigėsi 2005 metais. Nei viena kelionė neužtruko ilgiau, kaip 25 paras. Į laiko juostas nekreipiame dėmesio.Tekstinio duomenų failo ‘Pirmas.txt’ pirmoje eilutėje parašytas autobusų reisų skaičius n (1 £ n £ 100). Kitose eilutėse yra po 6 skaičius: išvykimo mėnuo, diena, valanda ir minutė, bei kiek valandų ir minučių truko kelionė.Ekrane spausdinti atskiromis eilutėmis kiekvieno autobuso atvykimo į paskirties vietą mėnesį, dieną, valandą ir minutę. Spausdinti su komentarais, kaip parodyta pavyzdyje.

Pirmas.txt Rezultatų pavyzdys

304 27 15 25 125 5901 22 23 55 200 2009 29 8 10 12 13

U2. Keturkampiai. Duota n atkarpų. Parašyti programą, kuri atrinktų 4 atkarpas, iš kurių būtų galima sudaryti didžiausio perimetro keturkampį. Jeigu yra keli vienodai dideli keturkampiai, atrinkti pirmą pasitaikiusį.Tekstiniame faile ‘Antras.txt’ pirmoje eilutėje užrašytas sveikasis skaičius reiškia atkarpų skaičių n (4 £ n £ 100). Kitose eilutėse yra užrašyti n atkarpų ilgiai (sveikieji skaičiai).Ekrane spausdinkite 4 atkarpas, iš kurių galima sudaryti ieškomą keturkampį ir jo perimetrą.

Antras.txt Rezultatų pavyzdys

102 6 5 10 8 4 9 4 5 3

Keturkampio atkarpos: 6 10 8 9Perimetras: 33

U3. Žodžių paieška. Parašykite programą, kuri perskaitytų iš tekstinio failo "Trecias.txt" tekstą po vieną simbolį (1 < simbolių kiekis <= 2000) ir jais užpildytų masyvą A[n,n]. Į masyvą nerašomi eilutės pabaigos, naujos eilutės ir failo pabaigos simboliai. n parenkamas toks mažiausias, kad tekstas tilptų į kvadratinę matricą. Jei paskutinei eilutei trūksta simbolių, užpildote tarpais. Po to programa iš tekstinio failo "Zodziai.txt", kuriame kiekvienas žodis yra atskiroje eilutėje ir prasideda nuo 1 pozicijos, perskaito eilinį žodį, kurio ilgis k <= n/2. Reikia nustatyti, kiek kartų šis žodis kartojasi lentelėje A[n, n]. Paieška turėtų būti atliekama horizontaliai iš kairės į dešinę, vertikaliai iš viršaus žemyn ir pagal dešinę diagonalę žemyn ir į dešinę (ne tik pagrindinė diagonalė). Žodžiai iš eilutės (stulpelio) į eilutę (stulpelį) nekeliami. Žodžiai nepersidengia, bet trumpesnis žodis gali būti ilgesniojo žodžio dalimi.Ekrane atspausdinkite parinktą n reikšmę ir kiekvieno žodžio pasikartojimų skaičių.

Trecias.txt Matrica

Berzas,sula;;sula;;klevu saldial lapasula B e r z a s , s u

a aula, ar suart zemes vaikai du l a ; ; s u l a ;

Zodziai.txt ; k l e v u s a

sula l d i a l l a p

alus a s u l a a

Atsakymas a u l a , a

n = 9 r s u a r t

sula 3 z e m e s v a i

alus 2 k a i d u

16

Page 17: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Aukštaitijos programuotojų konkurso užduotys

U1. Pavaros. Eilė velenų tarpusavyje yra sujungti pavaromis (krumpliaratinėmis arba diržinėmis). Pavara vieno veleno sukimosi kryptį ir greitį perduoda kitam velenui. Kryptis priklauso nuo pavaros tipo (žr. pav.), o greitis – nuo pavaros perdavimo koeficiento. Jeigu pavaros perda-vimo koeficientas yra didesnis už vienetą, tai antrasis velenas suksis greičiau tiek kartų, koks yra koeficientas. Jeigu perdavimo koeficientas yra tarp nulio ir vieneto, tai antrasis velenas suksis lėčiau. Jums reikia nustatyti, į kurią pusę ir kokiu greičiu suksis paskutinis velenas, jeigu žinote pirmojo veleno sukimosi greitį ir kryptį, bei visų pavarų tipus ir perdavimo koeficientus.

Duomenys . Failo "Pirmas.txt" pirmoje eilutėje nurodyta pirmojo veleno sukimosi kryptis ir sukimosi greitis. Sukimosi kryptis nurodyta žodžiu PAGAL, jeigu velenas sukasi pagal laikrodžio rodyklę, arba žodžiu PRIES, jeigu velenas sukasi prieš laikrodžio rodyklę. Sukimosi greitis nurodomas apsisukimais per minutę. Antroje eilutėje nurodytas pavarų skaičius iki paskutinio veleno. Tolesnėse eilutėse nurodyti pavarų tipai ir perdavimo koeficientai. Pavarų tipai nurodomi raide D, jeigu pavara diržinė, arba raide K, jeigu pavara krumpliaratinė. Perdavimo koeficientas nurodomas skaičiumi.

Rezultatas . Ekrane atspausdinkite paskutinio veleno sukimosi kryptį ir greitį (apsisukimais per minutę). Krypčiai nurodyti naudokite žodį PAGAL, jeigu velenas suksis pagal laikrodžio rodyklę, arba žodį PRIES, jeigu velenas suksis prieš laikrodžio rodyklę.

Pirmas.txt Rezultatų pavyzdys

PAGAL 150

5

K 5.0

D 0.7

K 1.5

D 3.0

K 0.5

PRIES 1181.25

U2. Išraiškos. Parašykite programą, kuri įveda lygtį ir suskaičiuoja rezultatą. Eilutę sudaro sveikieji skaičiai ir aritmetiniai ženklai: +, -, *, /, ^. Pirmosios 4 yra žinomos aritmetinės operacijos, o ^ - kėlimas laipsniu. Skaičiai gali būti neigiami. Išraiška baigiama kabliataškiu, prieš kurį yra tarpas. Tarp operacijų ženklų ir skaičių yra po vieną tarpą. Operacijos atliekamos iš kairės į dešinę. Duomenys įvedami iš tekstinio failo "Antras.txt" . Pirmasis skaičius faile rodo, kiek bus eilučių. Rezultatai išvedami į ekraną. Rezultatuose spausdinama pradinė išraiška ir už lygybės gautas atsakymas.

Antras.txt Rezultatų pavyzdys

3

2 + 3 ^ 2 + 36 * 1 ;

2 ^ -3 * 16 ;

5 ;

2 + 3 ^ 2 + 36 * 1 = 61

2 ^ -3 * 16 = 2

5 = 5

U3. Teksto

dešifravimas . Programa-šifratorius tekstą surašė į matricą A[n,n] spirale prieš laikrodžio rodyklę pradedant nuo centro ( n – nelyginis skaičius). Vienas matricos elementas – vienas simbolis. Vietoje tarpų – žvaigždutės ( * ). Nepanaudotuose matricos elementuose taip pat įrašomos žvaigždutės.

Parašykite programą – teksto dešifratorių, kuri perskaitytų taip užrašytą tekstą ir parodytų jį ekrane, kai šifravimo rezultatai surašyti faile "Trecias.txt" tokiu būdu: 1-oje eilutėje – n reikšmė (nelyginis skaičius, 0 < n < 20 ), kitose failo eilutėse – matricos eilutės. Pavyzdys:

17

Page 18: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Trecias.txt Matrica A[n,n] Tekstas

5

*****

IVAM*

MRPA*

OOGRS

*MENA

PROGRAMAVIMO MENAS

Dzūkijos programuotojų konkurso užduotys U1. Gyventojai. Lietuvos gyventojų duomenų registre yra duomenys apie gyventojų asmens kodus:

SYYMMDDXXXX

S – lytis: 3 (vyras, 1900–1999), 4 (moteris, 1900–1999), 5 (vyras, 2000– ), 6 (moteris, 2000– ),

YY – gimimo metų paskutiniai du skaitmenys(00, 01, 02, 03, …, 98, 99),

MM – gimimo mėnesio numeris (01, 02, 03, …, 11, 12),

DD – gimimo dienos numeris (01, 02, 03, …, 29, 30, 31),

XXXX – registracijos numeris (0001 … 9999).

Parašyti programą, kuri rastų

vyriausio Lietuvos vyro ir vyriausios moters gimimo datas ir jas atspausdintų ekrane.

Duomenų tekstiniame faile ’U1.txt’ pirmoje eilutėje yra užrašytas gyventojų skaičius n (1 £ n £ 3000). Toliau po vieną eilutėje yra užrašyti gyventojų asmens kodai (n kodų).

Ekrane spausdinti dvi gimimo datas pavyzdyje parodytu pavidalu. Jeigu vyrų arba moterų nėra, tuomet spausdinti pranešimą, kad sąraše nėra: “Vyrų nėra” arba “Moterų nėra”.

<!--[if !vml]-->

<!--[endif]-->

U2. Eilė. Eilėje A turime n (n £ 10) pirminių skaičių surikiuotų didėjimo tvarka. Eilėje B turime m (m £ 10) bet kokių sveikų teigiamų skaičių (skaičiai nesikartoja ir nėra pirminiai). Įterpti visus šiuos skaičius į pirminių skaičių eilę A pagal tokias taisykles:

<!--[if !supportLists]-->· <!--[endif]-->skaičiai iš B imami eilės tvarka;

<!--[if !supportLists]-->· <!--[endif]-->skaičius įterpiamas iš karto už tų pirminių skaičių iš kurių jis dalinasi be liekanos (yra tų skaičių kartotinis);

18

U1.txt Rezultatų pavyzdys

6365082300234321006006860111300321402031900103050115000750310241123

Vyriausias vyras gimė: 1905 m. sausio 15 d.Vyriausia moteris gimė: 1902 m. kovo 19 d.

23330303333333303023332

Vyriausias vyras gimė: 1933 m. kovo 2 d.Moterų nėra

Page 19: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

<!--[if !supportLists]-->· <!--[endif]-->skaičiai, kurie nėra kartotiniai nei vieno iš duotų pirminių skaičių, į eilę A neterpiami.

Duomenys surašyti tekstiniame faile ’U2.txt’. Pirmoje eilutėje yra parašyta, kiek pirminių skaičių yra eilėje A. Antroje eilutėje surašyti pirminiai skaičiai, esantys eilėje A. Trečioje eilutėje parašyta, kiek skaičių yra eilėje B. Ketvirtoje eilutėje surašyti eilės B skaičiai.

Rezultatai spausdinami ekrane. Reikia atspausdinti eilės dydį ir skaičius, esančius eilėje.

U3. Daržas. Darže kvadratiniu lizdiniu būdu buvo pasėtos saulėgrąžos. Užaugo didelės ir gražios. Atėjus garbingam svečiui, daržininkas išdidžiai vedasi parodyti daržą ir dovanoja dvi saulėgrąžų galvas. Tačiau svečias gali rinktis tik tokias dvi galvas, kurių bendras svoris didžiausias ir kurios auga greta. Parašykite programą, kuri padėtų pasirinkti dovanojamą porą galvų.

Duomenys tekstiniame faile ’U3.txt’. Daržas stačiakampio formos ir sudalintas į tarpusavyje susikertančias lysves: iš vakarų į rytus einančių lysvių yra n (toliau vadinsime horizontaliomis) ir iš šiaurės į pietus einančių lysvių yra m (toliau vadinsime vertikaliomis). Kiekviename susikirtime auga po vieną saulėgrąžą.

Žinoma, kad 1 £ n, m £ 50. Daržas gali būti vaizduojamas dvimate lentele, kurios eilučių skaičius yra n, o stulpelių – m. Kiekvienas lentelės skaičius reiškia saulėgrąžos galvos svorį. Jeigu 0 (nulis), tai tos galvos nebėra – jau suvalgyta. Kaimyninėmis saulėgrąžomis laikomos tokios, kurių horizontalių ir (arba) vertikalių lysvių numeriai skiriasi ne daugiau, kaip vienetu.

Tekstiniame faile primoje eilutėje užrašytos n ir m reikšmės. Toliau eilutėmis surašyti daržo horizontalių lysvių saulėgrąžų galvų svoriai.

Rezultatą spausdinti ekrane. Pirmoje eilutėje – pirmos surastos galvos duomenys: svoris, horizontalios lysvės numeris ir vertikalios lysvės numeris. Antroje – antrosios surastos galvos duomenis. Jeigu darže yra keletas vienodai tinkamų galvų porų, tai nurodyti ekrane bet kurią vieną. Jeigu darže jau nėra nei vienos tinkamos galvų poros, tuomet spausdinti pranešimą “Pora nesurasta”.

U3.txt Rezultatų pavyzdys

U3.txt Rezultatų pavyzdys

4 52.5 1 3.1 5 14.1 2.2 11 0 01 1 5.8 9.4 118 2 0 0 0.8

11 2 39.4 3 4 3 3

2 0 20 0 01 0 15

Pora nesurasta

Forumo užduotys 1. Kalendorius. Parašykite programą, kuri spausdintų metinį kalendorių. Įvedimo duomenys: metai ir pirmoji sausio diena įvedama sveikuoju skaičiumi (1 – pirmadienis,…, 7 - sekmadienis). Duomenys įvedami klaviatūra. Rezultatai spausdinami į failą 'U1.rez.txt'.

Pastaba. Metai yra keliamieji, jei dalijasi be liekanos iš 400 arba dalijasi be liekanos iš 4, bet nesidalija iš 100.

2. Vardai. Faile 'U2V.txt' yra vienos baigiamosios klasės mokinių vardų sąrašas abėcėlės tvarka. Visi mokiniai parašė prašymus toliau mokytis aukštosiose mokyklose. Failuose 'U2A.txt' ir 'U2B.txt' yra surašyti vardai priimtų į universitetą A ir į universitetą B atitinkamai, tačiau ne abėcėlės tvarka. Kai kurie mokiniai galėjo būti priimti į abu universitetus, tačiau viename sąraše nėra vienodų vardų.

Visuose trijuose failuose kiekvienas vardas rašomas atskiroje eilutėje, o pirmoje eilutėje yra failo vardų skaičius.

19

U2.txt Rezultatų pavyzdys

33 7 1954 9 21 14 133

Eiles ilgis: 9Eilė: 3 21 9 7 133 14 21 19 133

U2V.txt U2A.txt U2B.txt Rezultatų pavyzdys

10AldonaAntanasElvyraJonasKazysMildaMindaugasPetrasVytasZigmas

3ZigmasElvyraAntanas

4ElvyraMindaugasKazysPetras

Merginų sąrašas:AldonaMildaVaikinų sąrašas:JonasVytas

Page 20: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Sudaryti programą, kuri atspausdintų ekrane vardus mokinių, kurie nesimokys nei universitete A, nei universitete B. Pradžioje reikia spausdinti merginų vardus abėcėlės tvarka, po to – vaikinų vardus abėcėlės tvarka. Paskutinė vaikinų vardų raidė yra 's'. Prieš merginų vardus spausdinti „Merginų sąrašas:“, o prieš vaikinų – „Vaikinų sąrašas:“.

3. Žaidimas „Tetris“. Į stačiakampę taurę atsitiktine tvarka visą laiką krinta penkių formų figūros. Žaidėjas jų pasukti negali, todėl stengiasi kuo talpiau jas sudėti. Kažkuriuo momentu daroma taurės nuotrauka, kuri užkoduojama tekstiniame faile 'U3.txt'. Jums reikia parašyti programą, kuri perskaitytų 'U3.txt' failą ir pasakytų, kiek kiekvienos formos figūrų yra taurėje. Figūros pavaizduotos paveiksle. Taurėje matomi tik skaičiai, kurie sudaro figūras. Kadangi figūrų pasukti negalima, figūrą vienareikšmiškai nusako skaičiai ir jų tarpusavio išsidėstymas. Gali būti padaryta tuščios taurės nuotrauka.

Duomenys. Pirmoje failo eilutėje yra para-šyti du sveiki skaičiai n ir m (3 ≤ n, m ≤ 10). n nurodo taurės eilučių, o m - stulpelių skaičių. Toliau eilutėmis, kurių kiekvienoje yra m sveikų skaičių iš intervalo [0, 9], yra užrašyta taurės nuotrauka. Nulis reiškia, kad tarp figūrų yra plyšys (neužpildytas langelis).

Rezultatai. Į ekraną išvedamos penkios eilutės su figūrų numeriais ir jų kiekiais taurėje.

20

U3.txt Taurė ir figūros Atsakymas

9 70 0 0 3 0 0 00 0 0 6 0 0 04 5 8 9 5 6 00 8 9 7 8 5 01 0 5 6 7 8 94 7 8 5 0 3 07 8 7 8 9 6 30 5 4 5 8 9 67 8 9 8 9 8 9

I Figūra : 3II Figūra : 2III Figūra : 2IV Figūra : 1V Figūra : 3

0 0 0 3 0 0 0

0 0 0 6 0 0 0

4 5 8 9 5 6 0

0 8 9 7 8 5 0

1 0 5 6 7 8 9

4 7 8 5 0 3 0

7 8 7 8 9 6 3

0 5 4 5 8 9 6

7 8 9 8 9 8 9

I Figūra II Figūra III Figūra IV Figūra V Figūra

1 2 3

4 5 6

7 8 9

1 2 3

4 5 6

7 8 9

1 2 3

4 5 6

7 8 9

1 2 3

4 5 6

7 8 9

1 2 3

4 5 6

7 8 9

Page 21: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dr. J.Kazicko programavimo konkursas KTU Pasvalys, 2006 m. sausio 13 d.

U1. Palindromas. Tekstiniame faile ’U1.txt’ duota n skaičių. Pirmoje failo eilutėje užrašytas skaičius

n (1 n 100). Kitose n eilučių užrašyti natūriniai skaičiai: 0..1000000000. Surasti ir parodyti ekrane palindromus (skaičius vienodai skaitomus iš abiejų galų) ir jų skaitmenų sumas.

U1.txt Rezultatų ekrane pavyzdys 5

1234567890

22222

123404321

9

213404312

22222 -> 10

123404321 -> 20

9 -> 9

213404312 -> 20

U2. Pinigai. Turistų būrys nutarė visus turimus pinigus sudėti į bendrą kasą. Reikia parašyti programą,

kuri suskaičiuotų, kiek pinigų ir kokiais banknotais bus kasoje.

Duomenys surašyti tekstiniame faile ’U2.txt’. Pirmoje eilutėje yra užrašytas turistų skaičius n (1 n 100). Toliau eilutėmis pateikiami kiekvieno

turisto turimų banknotų vertės ir jų skaičius. Viena duomenų eilutė skirta vienam asmeniui. Pirmasis

skaičius eilutėje reiškia to asmens turimų banknotų skaičių. Toliau poromis surašyti duomenys apie

banknotus: pirmasis skaičius reiškia banknoto vertę, o antrasis – tos vertės banknotų skaičių.

Rezultatai. Ekrane pirmoje eilutėje parodyti, kiek iš viso kasoje yra banknotų. Antroje eilutėje rodyti banknotų vertes, jų skaičių bei bendrą pinigų sumą, kaip parodyta pavyzdyje. Banknotus vardinti jų

verčių didėjimo tvarka. Banknotų vertės gali būti bet kokios nuo 1 iki 500.

U3. Skorpionas. Grafas – tai viršūnių ir jas jungiančių briaunų visuma. Tarp dviejų viršūnių gali būti tik

viena briauna. Brėžiniuose grafo viršūnės dažnai vaizduojamos mažais apskritimais, o briaunos – linijomis, jungiančiomis šiuos apskritimus.

Grafas, turintis n viršūnių yra „skorpionas“, jei yra viena viršūnė (geluonis), sujungta viena briauna su

kita viršūne (uodega). Uodega dar viena briauna turi būti sujungta su trečia viršūne (liemeniu). Viršūnė-liemuo jungiama su likusiomis viršūnėmis (kojomis) atskiromis briaunomis. Kai kurios viršūnės-kojos gali būti sujungtos tarpusavyje.

Duomenys surašyti tekstiniame faile ’U3.txt’. Pirmoje failo eilutėje yra parašytas sveikasis

skaičius n (5 n 50). n nurodo grafo viršūnių skaičių. Toliau eilutėmis, kurių

kiekvienoje yra n simbolių, užrašyta grafo matrica V(n,n). V[i,j]=V[j,i]=’-’, jei tarp i-osios ir j-osios viršūnių nėra briaunos ir V[i,j]=V[j,i]=’+’, jei tarp i-osios ir j-osios

viršūnių yra briauna, o V[i,i]=’*’. Rezultatai. Ekrane rodyti pranešimą, ar įvestą matricą atitinkantis grafas yra „skorpionas“, ar ne. Jei taip,

nurodyti, kuri viršūnė yra „geluonis“, kuri „uodega“, kuri „liemuo“, kurios viršūnės yra „kojos“.

U2.txt Rezultatų ekrane pavyzdys 3

31 2 3 13 1 50 2 3 25

16 5 5 20 3 10 2 13 6

2 50 2

49

2*3 + 3*25 + 5*5 + 10*2 + 13*7 + 20*3 + 50*4 = 477

U3.txt Rezultatų ekrane pavyzdys 5

*+-+-

+*---

--*+-

+-+*+

---+*

Grafas yra ”skorpionas”

Geluonis: 2 virsune

Uodega: 1 virsune

Liemuo: 4 virsune

1 koja: 3 virsune

2 koja: 5 virsune

Kojos

Liemuo Uodega

Geluonis

Page 22: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dzūkijos programuotojų konkursas KTU Druskininkai, 2006 m. kovo 4 d.

U1. Morzė. Programa skaito vienos eilutės sakinį, esantį faile U1.txt. Sakinys yra pirmoje eilutėje ir baigiasi tašku (). Sakinį sudaro tik žodžiai, parašyti didžiosiomis lotyniškomis raidėmis. Tarp žodžių paliekamas vienas tarpas. Reikia

atspausdinti kiekvieną žodį atskiroje eilutėje, žodžio raides pakeičiant Morzės kodu. Raidės atskiriamos vienu tarpu.

Morzės kodas:

A - E I M –– Q --- U - Y --- U1.txt Rezultatas ekrane B - F - J --- N - R - V - Z -- RYTO RASA - --- – ---

- - - C -- G -- K -- O --- S W --

D - H L - P -- T – X --

U2. Detalės. Sandėlyje saugomos nesupakuotos vienodo dydžio, bet skirtingo tipo staklių detalės. Sandėlį

administruojanti bendrovė nusprendė pervežti detales į kitą sandėlį. Pervežamas detales reikia supakuoti į vienodo dydžio

dėžes. Dėžės dydis lygus dėžėje telpančių detalių skaičiui M (2 M 100). Vienoje dėžėje galima pakuoti tik to paties

tipo detales. Duomenų failo U2.txt pirmoje eilutėje įrašytas skirtingų detalių tipų skaičius N (1 N 100). Antroje eilutėje

įrašyti kiekvieno tipo pervežamų detalių skaičiai, skiriami bent vienu tarpo simboliu. Apskaičiuokite, į kokio dydžio

dėžes reikia supakuoti detales, kad pervežant visos dėžės užimtų kuo mažiau vietos. Spausdinkite ekrane detalių

pervežimui tinkamiausią dėžės dydį, reikalingą dėžių skaičių ir laisvų vietų skaičių visose pervežamose dėžėse. Pastaba: tinkamiausias dėžės dydis yra toks, kad supakavus detales lieka mažiausiai laisvų vietų. Jeigu yra keli pakavimo variantai, tuomet spausdinti tą variantą, kuriam esant reikia mažiausiai dėžių.

Pirmas pavyzdys Antras pavyzdys U2.txt Rezultatas ekrane U2.txt Rezultatas ekrane

5

12 9 11 3 15

3 17 1

4

15 4 8 10

5 8 3

Pastaba. Atsakymas 4 10 3 tūrio atžvilgiu lygiavertis,

tačiau dėžių skaičius didesnis.

U3. Kaimynai. Turime languotą popieriaus lapą. Jame yra N eilučių ir M stulpelių (2 N, M 20). Langeliuose įrašyti

sveikieji skaičiai. Kaimynais laikomi tie langeliai, kurie turi bent vieną sąlyčio tašką. Rasti langelį, kurio reikšmė

didžiausia tarp tokių, kurių kaimynai yra teigiami skaičiai. Pastaba: ne visi langeliai turi vienodą kaimynų skaičių: gali turėti 3 arba 5, arba 8 kaimyninius langelius. Tekstiniame duomenų faile U3.txt pirmoje eilutėje parašytos N ir M reikšmės, toliau kiekvienoje eilutėje lapo eilutės

skaičiai, skiriami bent vienu tarpo simboliu. Ekrane spausdinti surasto langelio koordinates ir reikšmę: eilutės numeris, stulpelio numeris, reikšmė. Jeigu yra keletas vienodų langelių, tai juos visus spausdinti atskiromis eilutėmis. Jeigu atsakymo nėra, - spausdinti pranešimą NĖRA. Duomenų (popieriaus lapo) pavyzdžiai (atsakymai pažymėti patamsintai):

3 8 -5 19 4 19 6 25 -1 40 19 3 1 19 6 7 9 -22 -2 5 6 3 7 4 9 3 4 8 19 1 8 -23 3 9 3 5 6 7 4 23 9 58 18 3 5 6 9 9 14 3 2 6 1 5 3 -1

U3.txt

(trečiam duomenų pavyzdžiui) Rezultatas ekrane

3 4

19 3 1 19

4 8 19 1

18 3 5 6

1 1 19

1 4 19

2 3 19

Page 23: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Suvalkijos programuotojų konkursas KTU Vilkaviškis, 2006 m. sausio 28 d.

U1. Vampyro skaičiai. Tarkime, kad turime skaičių v sudarytą iš n (n - lyginis skaičius) skaitmenų. Jeigu skaičius

v turi 2 daugiklius, kiekvienas iš kurių yra sudarytas iš n/2 skaitmenų, sukonstruotus iš skaičiaus v skaitmenų (visi

skaitmenys panaudojami tik po 1 kartą), jis yra vadinamas vampyro skaičiumi, o iš jo skaitmenų sukonstruoti

daugikliai – „vampyro iltimis“. Tekstinio failo ’U1.txt’ pirmoje eilutėje užrašytas skaičius m (1 ≤ m ≤ 100). Sekančiose m eilučių užrašyti natūriniai 4-ženkliai skaičiai. Rasti ir spausdinti ekrane visus vampyro skaičius ir jų

iltis. U1.txt Rezultatų pavyzdys

6

1100

1260

1395

1435

2101

2187

1260 = 21 * 60

1395 = 15 * 93

1435 = 41 * 35

2187 = 27 * 81

U2. Dominavimo sritis. Tarkime, kad turime skirtingų sveikųjų skaičių masyvą A(n). Sakome, kad pozicija i dominuoja nuo indekso jp iki indekso jg, jeigu i yra tarp jp ir jg (1 ≤ jp ≤ i ≤ jp ≤ n) ir masyvo elementų

reikšmės nuo A[jp] iki A[jg] imtinai yra ne didesnės už A[i] reikšmę (A[i]≥A[k], kur k [jp, jg]). Neabejotina, kad kiekvienai pozicijai i egzistuoja didžiausias intervalas, kuriame ji dominuoja. Pavadinkime jį i dominavimo sritimi. Parašykite programą, kuri surastų dominavimo sritis visoms n pozicijoms. Duomenys surašyti

tekstiniame faile 'U2.txt'. Pirmoje eilutėje parašytas duomenų rinkinių skaičius. Kitose eilutėse yra surašyti

duomenų rinkiniai: vienas rinkinys – vienoje eilutėje. Kiekvienas rinkinys susideda iš teigiamo skaičiaus n

(1 ≤ n < 500) ir už jo einančių n skirtingų natūrinių skaičių, kurių kiekvieno reikšmė neviršija 10000. Rezultatai spausdinami faile 'U2rez.txt'. Kiekvienam duomenų rinkiniui atspausdinkite kiekvienos pozicijos,

pradėdami nuo pirmos ir baigdami n-tąja, dominavimo sritį. Vienoje eilutėje spausdinami vienos pozicijos dominavimo srities pradžios ir pabaigos indeksai. Prieš kitą duomenų rinkinį praleidžiama tuščia eilutė. U2.txt U2rez.txt Papildomi paaiškinimai

2

5 1 2 3 4 5

6 9 4 1 3 10 5

1 1

1 2

1 3

1 4

1 5

1 4

2 4

3 3

3 4

1 6

6 6

Pavyzdžiui, panagrinėkime antrojo masyvo antrąją poziciją (skaičius 4). Jo

atsakymas – dominavimo sritis 2 4. Antrosios pozicijos skaičius 4 yra

mažesnis už pirmosios pozicijos skaičių 9, vadinasi, antrosios pozicijos

dominavimas prasideda tik nuo jos pačios. Žiūrint į kitą pusę, antrosios

pozicijos dominavimas baigiasi ties ketvirtąja pozicija, nes penktoje pozicijoje yra skaičius 10, už kurį 4 yra mažesnis.

U3. Kurjeris. Studentas įsidarbino kurjeriu firmoje, turinčioje n punktų, į kuriuos jis laiku privalo pristatyti gaminius. Kurjerio algos dydis yra pastovus ir nepriklauso nuo kelionės trukmės. Norėdamas įvertinti bendrą

kelionių kainą, studentas apskaičiavo kelionės kainą tarp bet kurių dviejų punktų. Užduotis – surasti tokį kelionės

maršrutą, kuris praeitų tik po vieną kartą pro kiekvieną punktą ir kurio bendra punktų apvažiavimo kaina būtų

mažiausia, t.y. kad studentui daugiau liktų pelno. Studento kelionės pradžia visą laiką yra pirmasis punktas. Ten jis

ir turi grįžti. Duomenys surašyti tekstiniame faile ’U3.txt’. Pirmoje failo eilutėje parašytas sveikasis skaičius n (5 ≤ n ≤ 50), nurodantis kvadratinės matricos dydį. Toliau eilutėmis užrašyta matrica K(n,n), kurioje išvardinta kelionių kaina tarp atskirų punktų, kur K[i,j]=K[j,i] ir reiškia kelionės kaštus tarp punktų i ir j. Rezultatus išvesti į ekraną, kuriame būtų išvardinti punktai jų aplankymo eilės tvarka ir kelionės kaina.

U3.txt Rezultatų pavyzdys 5

0 1 3 4 2

1 0 4 2 6

3 4 0 7 1

4 2 7 0 7

2 6 1 7 0

1, 5, 3, 2, 4, 1 = 10

Page 24: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Žemaitijos programuotojų konkursas KTU Kuršėnai, 2006 m. vasario 25 d.

U1. Aritmetika. Tekstinio failo 'U1.txt' pirmoje eilutėje užrašytas skaičius n (1 n 100). Kitose n eilučių

užrašyta po 4 natūrinius skaičius (s1, s2, s3, s4), skiriamus tarpais. Skaičių reikšmės gali būti nuo 1 iki 100

(1 s1, s2, s3, s4 100). Kokius aritmetinių operacijų ženklus (Paskalyje div, *, +, -) reikia padėti

vietoje klaustukų, kad eilutė (s1 ? s2) ? s3 = s4 būtų teisinga aritmetinė išraiška? Gautas išraiškas išvesti

į ekraną (jei galimos kelios, išvesti vieną). Jeigu negalima jokia išraiška, tai išvesti išraišką, vietoje operacijos

ženklų paliekant klaustukus, ir pranešimą „Israiska negalima“, kaip parodyta rezultatų pavyzdyje. U1.txt Rezultatų ekrane pavyzdys

3

2 3 5 25

2 2 2 22

1 4 7 12

(2 + 3) * 5 = 25

(2 ? 2) ? 2 = 22 Israiska negalima

(1 + 4) + 7 = 12

U2. Saldainiai. Tekstiniame faile 'U2.txt' yra surašytos klasės mokinių mėgstamų saldainių rūšys. Pirmoje failo

eilutėje užrašytas klasės mokinių skaičius n (1 n 30) . Sekančiose eilutėse užrašytas pirmojo mokinio

mėgstamų saldainių rūšių skaičius m (1 m 10) ir saldainių rūšių pavadinimai. Toliau atitinkamai antrojo

mokinio duomenys apie mėgstamus saldainius. Dar toliau trečiojo mokinio duomenys ir taip toliau iki n - ojo mokinio. Saldainių rūšies pavadinimas sudarytas tik iš lotyniškų raidžių ir jo ilgis neviršija 20 simbolių. Parašyti programą, kuri rastų ir ekrane pateiktų:

1. Kiek rūšių saldainių iš viso mėgsta klasės mokiniai? 2. Ar yra tokia saldainių rūšis ar kelios rūšys, kurias mėgsta visi mokiniai? Jeigu yra, spausdinti jų

pavadinimus atskirose eilutėse, jeigu nėra, pranešimą „nera“ spausdinti atskiroje eilutėje. Atsakymus spausdinti taip, kaip parodyta rezultatų pavyzdyje. Net, jeigu nėra nei vienos saldainių rūšies, kurią

mėgsta visi mokiniai, pranešimą „2. Visi mokiniai megsta:“ spausdinti reikia, o žodį „nera“ reikia spausdinti atskiroje eilutėje.

U2.txt Rezultatų ekrane pavyzdys

3

2

Buratinas

Irisai

3

Aguona

Irisai

Fortuna

4

Fortuna

Buratinas

Irisai

Karvute

1. Saldainiu rusiu skaicius: 5

2. Visi mokiniai megsta:

Irisai

U3. Sklypas. Ūkininkas turi kvadratinį žemės sklypą, kuriame nori pastatyti didelę kvadratinę daržinę. Ūkininkui

gaila kirsti medžius, todėl daržinei jis turi rasti plotą, kuriame nėra medžių. Visas žemės sklypas padalintas į n × n (1 n 200) dalių. Dalių, kuriose auga medžiai, sąrašas yra duotas. Parašykite programą, kuri nustatytų, kokią

didžiausią kvadratinę daržinę ir kurioje vietoje ūkininkas gali pastatyti savo sklype, nekirsdamas medžių. Tekstinio duomenų failo 'U3.txt' pirmoje eilutėje yra skaičius n – sklypo kraštinės ilgis (dalimis), ir

skaičius t – dalių, kuriose yra medžių, skaičius (1 t 500). Kitose t eilučių yra dalių su medžiais,

koordinatės. Pirmasis skaičius yra eilutės numeris, o antrasis – stulpelio numeris. Rezultatai pateikiami ekrane. Išvedamas daržinės kraštinės ilgis (dalimis) ir

daržinės viršutiniojo kairiojo kampo koordinatės, kaip parodyta rezultatų pavyzdyje.

Jeigu sklype yra kelios vietos, kuriose telpa daržinė, tai pateikite bet kurios vienos

vietos koordinates. Pavyzdžiui, paveiksle pavaizduotas ūkininko sklypas padalintas į 8 × 8 dalių.

Taškais pažymėtose dalyse nėra medžių, o '#' pažymėtose dalyse auga medžiai.

Dalių su medžiais koordinatės yra (2, 2), (2, 6) ir (6, 3). Didžiausia kvadratinė

daržinė, kurią galima pastatyti ūkininko sklype yra 5 × 5. Ji gali būti pastatyta dvie-jose vietose. Vienos vietos viršutinis kairysis kampas yra (3, 4), o kitos – (4, 4).

U3.txt Rezultatų ekrane pavyzdys

8 3

2 2

2 6

6 3

Darzines krastines ilgis: 5

Koordinates: 3, 4

1 2 3 4 5 6 7 8

1 . . . . . . . .

2 . # . . . # . .

3 . . . . . . . .

4 . . . . . . . .

5 . . . . . . . .

6 . . # . . . . .

7 . . . . . . . .

8 . . . . . . . .

Page 25: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dr. J.Kazicko mokinių kompiuterininkų forumas KTU Kaunas, 2006 m. kovo 25 d.

U1. Pieštukai. Turime n (1 ≤ n ≤ 100) spalvotų pieštukų naudojimo istoriją. Pieštukai naudojimo metu buvo drožiami

peiliu arba drožtuku. Nudrožtais pieštukais buvo braižomi brėžiniai. Taip pat jie galėjo būti nulūžę. Naudojimo istorija koduojama raidėmis: D – drožimas drožtuku, P – drožimas peiliu, B – braižymas, L – lūžimas. Jums reikia parašyti

programą, kuri nustatytų likusį pieštukų ilgį. Programa veikia pagal šias taisykles. 1. Naudojimo pradžioje visi pieštukai yra nauji, nedrožti ir yra 15 cm ilgio. 2. Drožiant pieštuką peiliu, jis sutrumpėja 10 mm. 3. Drožiant pieštuką drožtuku, jis sutrumpėja 7 mm. 4. Jeigu braižant brėžinius pieštukas nenulūžta, jis sutrumpėja 7 mm, jeigu prieš tai buvo drožtas peiliu. 5. Jeigu braižant brėžinius pieštukas nenulūžta, jis sutrumpėja 5 mm, jeigu prieš tai buvo drožtas drožtuku. 6. Pieštukas gali nulūžti drožiant arba braižant. 7. Jeigu pieštukas lūžta, tai jis sutrumpėja 10 mm (buvo drožtas peiliu) arba 7 mm (buvo drožtas drožtuku). Duomenys yra faile "U1.txt". Pirmoje failo eilutėje yra pieštukų skaičius n, kitose n eilučių yra pieštukų naudojimo

istorijos. Eilutės pradžioje yra pieštuko spalva (20 simbolių). Toliau eilutėje yra veiksmų skaičius m (1 ≤ m ≤ 100)

ir pieštuko naudojimo veiksmai. Veiksmai skiriami vienu tarpo simboliu. Rezultatus programa turi išvesti ekrane. Spausdinama pieštuko spalva ir jo ilgis, naudojimosi istorijos pabaigoje,

milimetrais.

U1.txt Rezultatai ekrane

3

Mėlynas 9 P B L D B P L P B

Raudonas 15 D B D B D B D L D B D B D B L

Šviesiai žalias 1 P

Mėlynas 81

Raudonas 62

Šviesiai žalias 140

U2. Dėžės. Aukštame koridoriuje reikia pakeisti elektros lemputę. Žmogus lemputę pasiekia, jei su galva ją liečia.

Koridoriuje guli n dėžių. Galima pasidėti vieną dėžę ir lipant ant jos pasiekti lemputę arba dėti vieną dėžę ant kitos ir vėl

siekti lemputę. Galima dėti tik dvi dėžes vieną ant kitos. Dedant vieną dėžę ant kitos, reikia laikytis saugumo reikalavimų – viršutinė dėžė turi pilnai liesti apatinę dėžę. Viršutinę dėžę galima sukinėti, o apatinės – negalima. Naudojamos dėžės

aukštis negali viršyti pusės žmogaus ūgio. Atspausdinti numerius ir parametrus dėžių, ant kurių užlipus galima pasiekti lemputę arba atspausdinti, kad lemputės

pasiekti neįmanoma. Rezultatus išvesti į ekraną taip, kaip pateikta pavyzdyje. Duomenys faile 'U2.txt' išdėstyti tokia

tvarka. Pirmoje eilutėje - žmogaus ūgis, atstumas nuo grindų iki lemputės ir dėžių kiekis n. Tolimesnėse n eilučių pateikti dėžių parametrai: aukštis, ilgis, plotis. Vienos dėžės parametrai užima vieną eilutę. Visi dydžiai išreikšti centimetrais.

U2.txt Rezultatų ekrane pavyzdys

176 256 4

30 30 30

40 50 60

70 40 80

90 90 95

Numeriai 3 ir 1, parametrai 70 40 80, 30 30 30

Numeriai 3 ir 2, parametrai 70 40 80, 60 40 50

Numeriai 3 ir 2, parametrai 70 40 80, 50 40 60

U3. Maršrutai. Turizmo agentūra organizuoja kelionę po Lietuvą. Reikia parašyti programą, kuri pasiūlytų ilgiausios

kelionės maršrutą. Tekstiniame faile 'U3.txt' surašyti duomenys apie kelius tarp miestų. Pirmoje failo eilutėje yra kelių

skaičius n (1 ≤ n ≤ 100). Sekančiose n failo eilučių surašyta: pirmojo miesto pavadinimas, antrojo miesto

pavadinimas, kelio tarp pirmojo ir antrojo miesto ilgis kilometrais. Miesto pavadinimas ne ilgesnis kaip 15 simbolių. Išvykus iš vieno miesto galima nukeliauti į bet kurį kitą miestą. Kelionė gali prasidėti bet kuriame mieste. Tarp miestų

gali būti daugiau kaip vienas kelionės maršrutas. Kelionės metu tas pats miestas gali būti aplankytas tik vieną kartą.

Maršrutas nebūtinai turi apimti visus duotus miestus. Atspausdinkite ekrane ilgiausios kelionės maršrutą ir jo ilgį

kilometrais kaip parodyta pavyzdyje.

Vilnius

Telšiai

Panevėžys

Kaunas

Marijampolė

Alytus

Utena Klaipėda

Šiauliai

60

69 102

95

83 72

87

212 109

U3.txt

9

Vilnius Kaunas 102

Panevėžys Šiauliai 83

Utena Vilnius 95

Klaipėda Kaunas 212

Marijampolė Alytus 60

Telšiai Šiauliai 72

Kaunas Alytus 69

Klaipėda Telšiai 87

Kaunas Panevėžys 109

Rezultatų ekrane pavyzdys

Utena – Vilnius – Kaunas – Klaipėda – Telšiai –

Šiauliai - Panevėžys (651 km)

Page 26: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dr. J.Kazicko programavimo konkursas KTU Pasvalys, 2007 m. sausio 19 d.

U1. Pinigai. Žmogus į banką padėjo N pinigų su P procentų metinių palūkanų. Žmogus kasmet iki gruodžio 30 d. sunaudoja K pinigų arba visus, jeigu yra mažiau, - tuomet sąskaita uždaroma. Bankas procentus skaičiuoja kasmet gruodžio 31 d. (kitų operacijų nevykdo) ir už paslaugą pasiima R pinigų, bet ne daugiau, negu yra sąskaitoje. Kiek pinigų bus sąskaitoje po 10 metų? Jeigu sąskaita uždaryta, tai joje bus nulis pinigų. Duomenys. Tekstiniame faile ‘U1.txt’ yra duomenys apie žmonių indėlius. Pirmoje eilutėje indėlininkų skaičius Ind (1<= Ind <= 100) ir banko rinkliavos už paslaugas dydis R (litai ir centai). Toliau duomenys apie indėlininkus. Vienoje eilutėje vieno žmogaus duomenys: indėlio dydis N (litai ir centai), palūkanos P, sunaudojami pinigai K (litai ir centai). Visi duomenys realaus tipo, išskyrus indėlininkų skaičių. Rezultatai. Ekrane spausdinti kiekvieno indėlio dydį (litai ir centai) po 10 metų. Spausdinti centų tikslumu.

U1.txt Ekranas

5 10.25

125.23 5.2 14.10

1251.59 6 1.1

12.12 25 0.0

0.99 50 0.10

1254.99 3 100.85

0.00

2090.94

0.00

0.00

378.28

U2. Temperatūra. Pasvalyje iš eilės N dienų buvo matuojama oro temperatūra. Nustatykite ilgiausią iš eilės einančių dienų laikotarpį, kurio vidutinė dienos temperatūra buvo teigiama. Ieškomame laikotarpyje gali būti tiek teigiamų, tiek nulinių, tiek neigiamų temperatūrų. Duomenys. Tekstiniame faile ‘U2.txt’ pirmoje eilutėje yra N reikšmė (1<= N <= 100). Kitose eilutėse – temperatūrų reikšmės (sveikieji skaičiai): i-asis (i = 1, ..., N) skaičius – i-osios dienos temperatūra. Rezultatai. Ekrane spausdinti rasto laikotarpio pirmos ir paskutinės dienų numerius bei vidutinę laikotarpio temperatūrą. Jei tokio laikotarpio nėra, spausdinti žodį ‘NĖRA’, jei yra keli ilgiausi vienodo ilgio, – spausdinti informaciją apie pirmąjį pagal pradžios datą.

U2.txt Ekranas

8

-10 5 -2 4

-6 -8 -1 0

2 5 0.25

U3. Tramvajai. Miesto gatvėmis kas T minučių kursuoja tramvajai. Visos miesto gatvės eina tik iš šiaurės į pietus (N gatvių) arba iš vakarų į rytus (E gatvių). Tramvajai važiuoja tik tiesiai, vienodu greičiu, o keleivių įlaipinimui ir išlaipinimui papildomo laiko nereikia. Nuo vienos iki kitos sankryžos tramvajai nuvažiuoja per M minučių. Kiekvienoje sankryžoje yra stotelė, kurioje galima persėsti į kitą tramvajų. Raskite kur, kada ir į kurį tramvajų reikia persėsti norint greičiausiai nuvažiuoti iš pradinės į galinę kelionės stotelę. Duomenys. Tekstinio failo ‘U3.txt‘ pirmoje eilutėje yra T ir M (1≤ T, M≤ 60) reikšmės. Antroje eilutėje yra N

ir E (1≤ N, E≤ 100) reikšmės. Trečioje eilutėje yra 4 skaičiai SP, VP, SG, VG (SP ≤ SG; VP ≤ VG) , kur (SP, VP) yra pradinės stotelės koordinatės, o (SG, VG) – galinės stotelės koordinatės. Čia Si (i = 1, ..., N) yra šiaurės-pietų gatvės (numeruojama iš vakarų į rytus), o Vj (j = 1, ..., E) – vakarų-rytų gatvės (numeruojama iš šiaurės į pietus). Ketvirtoje ir penktoje eilutėse kiekvienai Si ir Vj gatvei duotas pirmojo tramvajaus išvykimo iš atitinkamai šiauriausiai ir vakariausiai esančios stotelės laikas. Paskutinėje failo eilutėje yra kelionės pradžios laikas. Laikas duotas minutėmis po vidurnakčio. Visi duomenys yra sveikojo tipo. Rezultatai. Ekrane spausdinkite tramvajaus, į kurį reikia įlipti pradinėje stotelėje, numerį ir įlipimo laiką. Toliau spausdinkite kiekvieno persėdimo (jei toks buvo) stotelės koordinates, tramvajaus, į kurį reikia persėsti, numerį ir įlipimo laiką. Pabaigoje spausdinkite išlipimo galinėje stotelėje laiką. Tramvajaus numeris sutampa su gatvės, kuria jis kursuoja, numeriu. Laiką spausdinkite formatu valandos:minutės.

S1 S2 S3 S4 S5

V1

V2

V3

V4

1:43

1:53 2:06

2:09

30 100 115 100 30

10

25

20

10

važiuoja

kas 30 min.

važiuoja

3 min.

Tramvajaus Nr.

Laikas, min.

U3.txt Ekranas

30 3

5 4

2 2 5 4

30 100 115 100 30

10 25 20 10

93

S2 1:43

(2,3) V3 1:53

(5,3) S5 2:6

2:9

Page 27: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dr. J.Kazicko programavimo konkursas KTU Druskininkai, 2007 m. kovo 17 d.

U1. Gimtadieniai. Duoti klasės mokinių duomenys. Rasti:

• kiek klasėje vaikinų ir kiek merginų?

• kiek kiekvieną mėnesį klasė švęs gimtadienių?

• kada bus švenčiamas artimiausias vaikino ir merginos gimtadienis?

Duomenys. Tekstinio failo ‘U1.txt’ pirmoje eilutėje užrašytas klasės mokinių skaičius n (1 ≤ n ≤ 30) ir šiandienos

data, o tolimesnėse n eilučių yra surašyta mokinių lytis (V – vaikinas, M – mergina) ir gimimo datos (metai mėnuo

diena) atskirti vienas nuo kito vienu tarpo simboliu. Klasėje yra ir vaikinų, ir merginų.

Rezultatai. Ekrane spausdinkite (žr. pvz.):

• vaikinų ir merginų skaičių;

• mėnesius ir gimtadienių skaičių;

• vieno vaikino ir vienos merginos, kurie greičiausiai švęs gimtadienį, gimimo datas.

U1.txt Rezultatai Rezultatų tęsinys

7 2007 03 17

V 1990 12 12

V 1989 02 15

M 1992 10 25

M 1990 05 20

V 1989 10 03

V 1991 10 10

M 1990 02 01

Vaikinai 4

Merginos 3

1 mėnesį gimė 0

2 mėnesį gimė 2

3 mėnesį gimė 0

4 mėnesį gimė 0

5 mėnesį gimė 1

6 mėnesį gimė 0

7 mėnesį gimė 0

8 mėnesį gimė 0

9 mėnesį gimė 0

10 mėnesį gimė 3

11 mėnesį gimė 0

12 mėnesį gimė 1

V 1989 10 03

M 1990 05 20

U2. Pjūklas. Duotas masyvas A(n) (3 ≤ n ≤ 100). Suraskite pačios ilgiausios „pjūklo dantų (dantimis į viršų)“

pavidalo iš eilės einančių skaičių sekos ilgį: ai+1 < ai+2 > ai+3 <…> ai+m. Seka egzistuoja, jei m ≥ 3.

Duomenys. Tekstiniame faile ‘U2.txt’ duomenys yra išdėstyti tokia tvarka: pirmoje eilutėje masyvo elementų

skaičius n, antroje eilutėje – masyvo elementai.

Rezultatai. Ekrane spausdinkite skaičių sekos, kurie sudaro „pjūklo dantis“, pradžios ir pabaigos indeksus, o

antroje eilutėje – sekos elementus. Jeigu sekos nėra, spausdinkite pranešimą „nėra“.

U2.txt Rezultatas

12

2 1 3 4 5 2 7 5 6 3 4 4

4 10

4 5 2 7 5 6 3

U3. Domino. Mokiniai žaidė domino ir paliko ant stalo sudėliotą „gyvatėlę“. Parašykite programą, kuri surastų,

kurioje vietoje yra porinės kaladėlės (abi pusės vienodos), kurios buvo panaudotos žaidimo metu. Iš viso domino

komplekte yra 7 skirtingos porinės kaladėlės.

Duomenys. Failo ‘U3.txt’ pirmoje eilutėje parašyti stalo matmenys n, m (5 ≤ n, m ≤ 100). Toliau yra užkoduotas

vaizdas ant stalo. Kaladėlių akys koduojamos sveikais skaičiais. Vieną kaladėlę nusako du skaičiai – viena pusė ir

kita. Kaladėlės pusė be akių koduojama nuliu, viena akis – vienetu, dvi akys – dvejetu, trys – trejetu, keturios –

ketvertu, penkios – penketu, šešios akys – šešetu. Minus vienetu koduojama laisva vieta ant stalo.

Rezultatai. Ekrane spausdinkite panaudotas poras ir nurodykite, kurioje stalo vietoje jas radote. Poras spausdinkite

nuo mažiausios iki didžiausios. Jeigu nebuvo panaudota nei viena pora, tai spausdinkite pranešimą „nėra“.

U3.txt Vaizdas ant stalo Rezultatas

8 9

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 -1 1 0 0 0 0 4 4

-1 -1 -1 -1 -1 -1 -1 -1 5

-1 2 1 1 1 1 6 -1 5

-1 2 -1 -1 -1 -1 6 -1 2

-1 3 3 3 3 -1 6 -1 2

-1 -1 -1 -1 6 -1 6 2 2

-1 3 5 5 6 -1 -1 -1 -1

1 2 3 4 5 6 7 8

1

9

2

3

4

5

6

7

8

0/0 (2, 5), (2, 6)

1/1 (4, 4), (4, 5)

2/2 (6, 9), (7, 9)

3/3 (6, 3), (6, 4)

6/6 (5, 7), (6, 7)

Page 28: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dr. J.Kazicko programavimo konkursas KTU Vilkaviškis, 2007 m. kovo 30 d.

U1. Dvejetainis. Dešimtainis skaičius k nurodytas dvejetainių (0,1) skaitmenų seka an-1, an-2,…, a1, a0. Ryšys tarp

dešimtainio skaičiaus k ir jo dvejetainio atitikmens išreiškiamas formule k=an-12n-1

+ an-22n-2

+…+ a12+ a0, kur

0 ≤ n ≤ 9. Sudarykite dvejetainių skaitmenų seką dešimtainiam skaičiui k+1. Atkreipkite dėmesį, kad k+1 skaičius

gali turėti daugiau skilčių, nei skaičius k dvejetainiame formate. Dvejetainėje aritmetikoje 1 + 1 = 0 ir 1 minty,

kuris pridedamas prie vyresnės skilties, o 0 + 1 = 1.

Duomenys. Tekstiniame faile ‘U1.txt’ duomenys yra išdėstyti tokia tvarka: pirmoje eilutėje skaičius k ir dvejetainio

skaičiaus skilčių skaičius n, antroje eilutėje – dvejetainių skaitmenų, atskirtais tarpais, seka. Atkreipkite dėmesį,

kad pirmasis sekos skaitmuo yra an-1, o paskutinis - a0.

Rezultatai. Ekrane spausdinkite skaičių k+1 ir jo dvejetainį atitikmenį. Tarp dvejetainių skaitmenų neturi būti

tarpų.

U1.txt Rezultatai

13 4

1 1 0 1

14

1110

U2. Varžtai ir veržlės. Vienoje dėžėje yra įvairaus diametro varžtai. Kitoje dėžėje yra veržlės. Parašykite

programą, kuri padėtų suskaičiuoti kokiais varžtais ir kokiomis veržlėmis reikia papildyti dėžes, kad visi varžtai

turėtų po veržlę.

Duomenys. Tekstinio failo ‘U2.txt‘ pirmoje eilutėje yra varžtų skaičius n (1 ≤ n ≤ 100). Antroje eilutėje surašyti

varžtų diametrai (sveikieji skaičiai, nuo 2 iki 20). Trečioje eilutėje yra veržlių skaičius m (1 ≤ m ≤ 100). Ketvirtoje

eilutėje yra veržlių diametrai (sveikieji skaičiai, nuo 2 iki 20).

Rezultatai. Rezultatus spausdinkite ekrane. Jeigu varžtų reikia, pirmoje eilutėje spausdinkite „Reikalingi varžtai:“

ir kitose eilutėse išvardinkite poromis (diametro didėjimo tvarka) kiek ir kokio diametro varžtų reikia. Jeigu varžtų

nereikia, pirmoje eilutėje spausdinkite „Varžtų nereikia“. Toliau analogiškai spausdinkite informaciją apie veržles.

Pranešimai: „Reikalingos veržlės:“ arba „Veržlių nereikia“.

U2.txt Rezultatai

8

8 4 2 8 10 5 4 5

10

2 2 2 5 5 4 4 4 2 4

Reikalingi varžtai:

3 2

2 4

Reikalingos veržlės:

2 8

1 10

U3. Bankomatas. Duotos bankomato išduodamų banknotų vertės ir kiek kokių banknotų bankomatas turi. Eilėje

prie bankomato laukia n klientų, kurių kiekvienas nori pasiimti x litų. Yra žinoma, kiek pinigų kiekvienas banko

klientas turi savo sąskaitoje.

Parašykite programą, kuri išmokėtų klientų pageidaujamas pinigų sumas galimai mažesniu banknotų skaičiumi.

Apskaičiuoti pinigų likutį bankomate: kiek kokių banknotų bankomate liko ir kokia bendra jų piniginė vertė?

Duomenys. Tekstinio failo ‘U3.txt’ pirmoje eilutėje surašytos 6 banknotų nominalų vertės išdėstytos mažėjimo

tvarka. Antroje eilutėje – atitinkamai kiekvieno nominalo banknotų skaičius, trečioje eilutėje – eilėje laukiančių

klientų skaičius n (1 ≤ n ≤ 100), tolimesnėse n eilučių – kliento sąskaitos numeris (4 simboliai), banke laikoma

pinigų suma ir pageidaujama pasiimti pinigų suma. Visi faile esantys skaičiai yra sveikieji.

Rezultatai. Ekrane eilutėmis spausdinkite:

Kliento sąskaitos numerį, buvusią banke pinigų sumą, minuso ženklą (-), skaičiavimų rezultatą: banknoto vertę,

daugybos ženklą (*), išduotų banknotų skaičių, minuso ženklą (-) ir t.t. Eilutės gale lygybės ženklą ir likusią pinigų

sumą. Jeigu pageidaujamos pinigų sumos negalima išmokėti, spausdinkite pranešimą ‘Negalima išmokėti’ (žr.

pavyzdį). Paskutinėje eilutėje spausdinkite bankomate likusią pinigų sumą (žr. pavyzdį).

U3.txt Rezultatai

500 200 100 50 20 10

4 6 8 4 3 5

9

LT21 1500 160

LT22 2660 250

LT23 3555 1720

LT24 966 690

LT25 777 1110

LT26 845 560

LT27 300 60

LT28 850 120

LT29 1000 205

LT21 1500-100*1-50*1-10*1 = 1340

LT22 2660-200*1-50*1 = 2410

LT23 3555-500*3-200*1-20*1 = 1835

LT24 966-500*1-100*1-50*1-20*2 = 276

LT25 777 1110 Negalima išmokėti

LT26 845-200*2-100*1-50*1-10*1 = 285

LT27 300 60 Negalima išmokėti

LT28 850-100*1-10*2 = 730

LT29 1000 205 Negalima išmokėti

500*0+200*2+100*4+50*0+20*0+10*1 = 810

Page 29: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Žemaitijos programuotojų konkursas KTU Kuršėnai, 2007 m. vasario 24 d.

U1. Trupmeninių skaičių kalkuliatorius. Parašykite programą, kuri atlieka aritmetinius veiksmus su trupmeniniais skaičiais ir spausdina rezultatą po paskutinės operacijos. Duomenys. Tekstinio failo ‘U1.txt’ pirmoje eilutėje nurodytas eilučių skaičius, o tolimesnėse eilutėse duoti sveikieji skaičiai: trupmeninio skaičiaus skaitiklis, trupmeninio skaičiaus vardiklis ir aritmetinės operacijos kodas (1 – pridėti, 2 – atimti, 3 – dauginti, 4 – dalinti, 5 – lygybė). Operacijos atliekamos nuosekliai. Rezultatai. Rezultatas turi būti suprastintas ir spausdinamas ekrane kaip dviejų skaičių pora: rezultato skaitiklis ir rezultato vardiklis, atskirti simboliu ‘/‘. Jei prastinimo nemokate atlikti, spausdinkite rezultatą be prastinimo su atitinkama pastaba (vertinime netenkate 4 taškų).

Pavyzdžiai. 5

2

7

5/

7

1

3

5

5

1

7

2=

+

− .

U1.txt Rezultatas

5

2 7 2

1 5 3

5 3 1

1 7 4

5 7 5

2/5

21

107

3

17

10

9/

7

18

120

24−=−

− .

U1.txt Rezultatas

4

-24 120 3

18 7 4

-9 10 2

17 3 5

-107/21

U2. Kolekcija. Aušra ir Rūta kolekcionuoja lietuviškus pašto ženklus. Pašto ženklų kataloge kiekvienas pašto ženklas turi savo numerį. Tai sveikasis skaičius. Žinoma, kad kolekcijoje yra bent vienas pašto ženklas. Taip pat žinoma, kad kolekcijoje ne daugiau kaip 1000 ženklų. Aušra nori pasiūlyti Rūtai mainus. Ji gali siūlyti tik tuos pašto ženklus, kurių ji turi daugiau kaip vieną ir kurių neturi Rūta. Negali siūlyti kelių vienodų pašto ženklų. Duomenys. Faile ‘U2a.txt’ yra surašyta Aušros kolekcija, o faile ‘U2r.txt’ – Rūtos kolekcija. Pirmoje eilutėje yra kolekcijoje esančių pašto ženklų skaičius, kitose eilutėse – kolekcijos ženklų kataloginiai numeriai išdėlioti didėjimo tvarka. Rezultatai. Ekrane spausdinkite Aušros siūlomų mainams pašto ženklų numerius, skiriamus tarpo simboliu. Jei Aušra neturi ką pasiūlyti, spausdinkite pranešimą „Ženklų keitimui nėra“. U2a.txt U2r.txt Rezultatas 14

1 1 1 2 2 2 5 6 648 12 13 13 25 99

9

1 5 6 7 7 14 44 25 127

2 13

U3. Kortelės. Turime n kortelių. Kortelės abiejose pusėse parašyta po vieną sveikąjį skaičių. Žinoma, kad kiekvienas skaičius nuo 1 iki n (<=100) kortelėse yra užrašytas po 2 kartus. Išdėliokite korteles taip, kad kiekvienas skaičius nuo 1 iki n būtų viršutinėje kortelės pusėje. Kortelių vietomis keisti negalima. Nurodykite, kuria puse kortelę reikia dėti. Korteles su skaičiais vaizduoja lentelė A(2, n), pirmoji lentelės eilutė – viršutinė kortelių pusė, antroji lentelės eilutė – apatinė kortelių pusė. Pavyzdžiui,

2 2 3 3 5 5 6 1 1 4 4 6

Atsakymas (V – viršus, A – apačia): V A V A V A 2 1 3 4 5 6 6 2 1 3 4 5

Duomenys. Tekstiniame faile ‘U3.txt’ duomenys yra išdėstyti tokia tvarka: pirmoje eilutėje lentelės stulpelių (kortelių) skaičius n, o tolimesnėse eilutėse – lentelės elementai. Rezultatai. Ekrane spausdinkite įvestą lentelę ir atsakymą, kur viršutinėje eilutėje nurodysite kortelės padėtį (V – viršus, A – apačia). Gali būti keletas teisingų atsakymų. Spausdinkite vieną iš jų. U3.txt Rezultatas

6

2 2 3 3 5 5

6 1 1 4 4 6

Pradinė padėtis

2 2 3 3 5 5

6 1 1 4 4 6

Išdėliota

V A V A V A

2 1 3 4 5 6

6 2 1 3 4 5

Page 30: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dr. J.Kazicko programavimo konkursas KTU Kaunas, 2007 m. balandžio 15 d.

U1. Skaičiai. Eilutėje užrašyti sveikieji teigiami skaičiai k1, k2, s1, s2. Tarp s1 ir s2 yra taškas, o tarp kitų skaičių

jokių ženklų (netgi tarpų) nėra. k1, k2 – skaičių s1, s2 ilgiai (skaitmenų kiekiai, 0 < k1, k2 < 10). Pavyzdžiui, jei s1

= 125, s2 = 9874, tai k1 = 3, k2 =4, o eilutė atrodys taip: 34125.9874. Skaičiaus s „papildiniu“ vadinsime skaičių

sudarytą iš tų pačių skaitmenų, bet surašytų atvirkščia tvarka. Pavyzdžiui, 125 „papildinys“ būtų skaičius 521.

Duomenys. Tekstinio failo ‘U1.txt’ pirmoje eilutėje yra užrašytas eilučių skaičius n (1 ≤ n ≤ 100), tolimesnėse n

failo eilučių surašytos suformuotos skaičių eilutės.

Rezultatai. Raskite ir ekrane atspausdinkite kiekvienos eilutės skaičių s1, s2 „papildinius“. „Papildinius“

spausdinkite išretintai (po vieną tarpą prieš skaitmenį), o tarp šių skaičių užrašyti „<“, „>“ arba „=” priklausomai

nuo šių „papildinių“ palyginimo rezultato. U1.txt Rezultatas

3

2412.1234

5212345.89

33543.543

2 1 < 4 3 2 1

5 4 3 2 1 > 9 8

3 4 5 = 3 4 5

U2. Tetraedras. Duota n trikampių kraštinių ilgiai. Raskite, kiek tetraedrų galima sudaryti iš šių trikampių.

Nustatykite kiekvieno iš jų paviršiaus plotą. Vienas trikampis gali priklausyti tik vienam tetraedrui. (Pastaba:

tetraedras - briaunainis, sudarytas iš keturių trikampių, iš kurių kiekvieni du trikampiai turi vieną bendrą kraštinę)

Duomenys. Tekstinio failo ‘U2.txt’ pirmoje eilutėje yra užrašytas trikampių skaičius n (1 ≤ n ≤ 100), tolimesnėse n

eilučių surašyti trikampio kraštinių ilgiai (sveikieji skaičiai).

Rezultatai. Ekrane atspausdinkite sudarytų tetraedrų skaičių ir kiekvieno jų duomenis: trikampių kraštinių ilgius ir

tetraedro paviršiaus plotą (dviejų skaitmenų po kablelio tikslumu).

U2.txt Rezultatas

8

5 6 2

5 5 6

8 5 4

6 6 6

1 2 3

5 6 5

5 6 7

6 5 5

Tetraedru kiekis: 1

5 5 6

6 6 6

5 6 5

6 5 5

Plotas 51.59

U3. Lapas. Lentelė A(n, m) (1 ≤ n ≤ 20, 1 ≤ m ≤ 20) vaizduoja languoto popieriaus lapą. Raskite, į kiek gabaliukų

subyrės lapas, jei iš jo iškirpsime kai kuriuos langelius. Lapeliai kampais nesilaiko. Iškerpami langeliai matricoje

žymimi 0. Iškerpami langeliai neskaičiuojami. Pavyzdžiui,

1 0 1 0 1 0 1 0

0 1 0 1 0 1 0 1

1 0 1 0 1 0 1 0

0 1 0 1 0 1 0 1

1 0 1 0 1 0 1 0

0 1 0 1 0 1 0 1

1 0 1 0 1 0 1 0

0 1 0 1 0 1 0 1

šis lapas subyrės į 32 gabaliukus.

Duomenys. Tekstiniame faile ‘U3.txt’ duomenys yra išdėstyti tokia tvarka: pirmoje eilutėje lentelės eilučių

skaičius n ir lentelės stulpelių skaičius m, o tolimesnėse eilutėse – lentelės elementai.

Rezultatai. Ekrane spausdinkite įvestą lentelę ir atsakymą, į kiek gabaliukų subyrės popieriaus lapas. U3.txt Rezultatas

3 4

1 0 1 1

0 1 1 0

0 1 0 0

1 0 1 1

0 1 1 0

0 1 0 0

Gabaliukai 2

Page 31: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Aukštaitijos programuotojų konkursas KTU Pasvalys, 2008 m. sausio 18 d.

U1. Šventinė girlianda. Įjungus lempučių girliandą, kai kurios lemputės šviečia, o kai kurios nešviečia. Paleidžiama programa, kuri valdo lempučių mirksėjimą. Jos darbo algoritmas toks:

pirmąją sekundę pakeičia savo būseną pirmoji lemputė (jeigu nešvietė – pradeda šviesti, jeigu švietė – nustoja šviesti); antrąją sekundę pakeičia savo būseną sekančios dvi lemputės; trečiąją sekundę pakeičia savo būseną tolesnės trys lemputės; ir taip toliau.

Parašykite programą, kuri valdytų lempučių girliandą. Perjungimo programoje po paskutinės lemputės seka pirmoji. Parašytą programą išbandykite su skirtingo ilgio girliandomis. Tekstiniame faile U1.txt pirmoje eilutėje yra girliandų skaičius K (1 ≤ K ≤ 100). Tolesnėje kiekvienoje eilutėje yra duomenys apie girliandą: sekundžių skaičius S (1 ≤ S ≤ 1000), kurioms praėjus nuo girliandos įjungimo mus domina lempučių padėtys, lempučių skaičius L (1 ≤ L ≤ 1000) ir lempučių pradinės padėtys: šviečia – 1, nešviečia – 0. Pasibaigus laikui ekrane spausdinkite kiekvienos girliandos lempučių padėtis. Vienai girliandai – viena eilutė.

U1d.txt Ekrane 7 1 5 1 0 0 1 1 2 2 0 1 3 1 1 4 12 1 1 1 0 0 0 1 1 1 0 1 0 52 6 1 0 1 1 0 1 5 4 1 0 1 0 13 10 1 1 0 0 1 1 0 0 1 1

0 0 0 1 1 0 0 1 0 0 0 1 1 1 0 0 0 1 1 0 1 0 1 1 1 0 1 0 1 1 1 0 1 1 0 0 1 1 0 0

U2. Spalvotos kortelės. Yra keturių spalvų kortelės (R – raudonos, G – geltonos, M – mėlynos, J - juodos), ant kurių yra užrašyti skaičiai (nuo 1 iki 13), pvz.: M 7 – mėlynos spalvos kortelė su skaičiumi 7, R 13 – raudonos spalvos kortelė su skaičiumi 13. Visų kortelių yra po du vienetus, t. y. 104 kortelės. Iš atsitiktinai išrinktų kortelių galima sudaryti sekas. Seką gali sudaryti ne mažiau kaip trys vienos spalvos iš eilės einančių didėjančių skaičių kortelės, pvz.: R 5 R 6 R 7 R 8 R 9 R 10. Tekstiniame faile U2.txt yra užrašyta 14-os atsitiktinai išrinktų kortelių duomenys. Parašyti programą, kuri iš šių kortelių sudarytų visas galimas maksimalaus ilgio sekas ir jas parodytų ekrane. Kiekviena kortelė gali būti panaudota tik vieną kartą. Jeigu sekų sudaryti nepavyko, spausdinti pranešimą: 'NERA'.

U2.txt Rezultatų ekrane pavyzdys M 9 G 3 M 1 M 1 M 10 G 2 M 3 R 6 M 2 G 1 M 11 M 4 J 7 M 4

G 1 G 2 G 3 M 1 M 2 M 3 M 4 M 9 M 10 M 11

U3. Didžiausia suma. Ant cilindro paviršiaus surašyti sveikieji skaičiai. Perrašant skaičius į failą cilindras buvo perpjautas kaip parodyta paveiksle. Gauta n×n (2 ≤ n ≤ 20) dydžio skaičių matrica A išsaugota tekstiniame faile U3.txt. Pirmojoje failo eilutėje įrašytas skaičius n. Kitose failo eilutėse surašyti tarpais atskirti sveikieji skaičiai atitinkantys matricos A eilutes. Raskite cilindro paviršiuje iš eilės einančių elementų seką, kurios suma yra didžiausia. Seką gali sudaryti vienas skaičius, arba skaičiai esantys toje pačioje cilindro eilutėje, arba skaičiai esantys tame pačiame cilindro stulpelyje. Sekos ilgis s (1 ≤ s ≤ n). Tas pats matricos elementas sekoje gali būti tik vieną kartą.

Programa pirmojoje rezultatų eilutėje turi spausdinti rastos sekos ilgį ir sekos elementų sumą. Kitose eilutėse spausdinti sekos skaičius nurodant kurioje matricos A eilutėje ir stulpelyje jie yra: sekos skaičius, eilutės numeris, stulpelio numeris. Eilutės ir stulpeliai numeruojami nuo 1. Jeigu galimi keli sprendimai, spausdinti tik vieną iš jų.

U3.txt Rezultatų ekrane pavyzdys 4 8 6 -6 10 -3 4 0 5 4 2 1 3 1 -9 9 -2

3 24 1 4 1 1 1 2

Page 32: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dzūkijos programuotojų konkursas KTU Druskininkai, 2008 m. kovo 29 d.

U1. Dvyniai. Du pirminiai skaičiai vadinami dvyniais, jei skirtumas tarp jų yra 2, pavyzdžiui 3 ir 5. Suraskite k porų dvynių pirminių skaičių. Skaičius gali dalyvauti ne vienoje poroje.

Klaviatūra Ekrane 4 3 5

5 7 11 13 17 19

Duomenys. k įvedamas klaviatūra (1 ≤ k ≤ 16). Veiksmams su skaičiais rekomenduojamas longint duomenų tipas.

Rezultatai. Ekrane spausdinkite surastas dvynių poras eilutėmis.

U2. Prekybos centro atidarymas. Naujo prekybos centro atidarymo diena. Parduotuvės administracija tikisi didelio žmonių antplūdžio, todėl nusprendė į prekybos salę leisti ribotą žmonių skaičių. Visi žmonės, norintys apsilankyti prekybos centre atidarymo dieną, stoja į eilę prie durų. Žmonių, stovinčių eilėje, yra n (1 ≤ n ≤ 100). Atidarymo metu įleidžiami 3⋅k žmonės. Vėliau į vidų įleidžiama po k (2 ≤ k ≤ 5) žmonių, kai prekybos salėje lieka ne daugiau kaip 2⋅k žmonių. Kiekvieno eilėje stovinčio žmogaus buvimo parduotuvėje laikas minutėmis yra žinomas. Šiam laikui praėjus jis išeina iš parduotuvės.

Reikia parašyti programą, kuri suskaičiuotų: a) kiek minučių turės praleisti eilėje žmogus x (1 ≤ x ≤ n) prieš patekdamas į parduotuvę; b) kurie žmonės iš parduotuvės išeis kartu su žmogumi y (1 ≤ y ≤ n) tuo pačiu metu.

Duomenys. Tekstiniame faile U2.txt yra pradiniai duomenys. Pirmoje eilutėje, pirmasis skaičius – žmonių skaičius eilėje n, toliau yra n skaičių, rodančių, kiek minučių parduotuvėje užtruks kiekvienas žmogus. Antroje eilutėje yra nurodytas programos užklausų kiekis m (1 ≤ m ≤ 5). Tolesnėse m eilučių yra skaičiai k, x ir y kiekvienai užklausai.

Rezultatus programa turi pateikti ekrane. Kiekvienos užklausos atsakymas spausdinamas vis kitoje eilutėje. Eilutėje spausdinamas žmogaus eilės numeris x, dvitaškis, kiek minučių reikės praleisti eilėje, kabliataškis, žmogaus eilės numeris y, dvitaškis ir žmonių, kurie išeis kartu, numeriai, atskirti kableliais, arba „ne“, jeigu niekas kartu neišeis. Tarpai, kuriuos matote rezultatų pavyzdyje, nėra privalomi.

U2.txt Ekrane 15 5 14 10 7 12 5 11 6 27 14 9 12 10 21 13 3 2 5 14 2 10 10 3 14 10

5: 0; 14: 9, 15 10: 10; 10: 12 14: 11; 10: ne

U3. Salos. Robotas iš didelio aukščio nufotografavo stačiakampį Žemės paviršiaus plotą. Gautas vaizdas buvo sudalintas kvadratiniais langeliais n × m (1 ≤ n, m ≤ 100). Langelis tamsus, jeigu jis atitinka sausumos dalelę ir šviesus, jeigu atitinka vandens plotelį. Parašykite programą, kuri suskaičiuotų, kiek yra salų ir kokio dydžio didžiausia sala. Sala – tai gretimų tamsių langelių visuma, iš visų pusių apribota šviesiais. Sala taip pat laikoma tamsių langelių visuma, esanti ant nufotografuoto ploto ribos (ne iš visų pusių supa vanduo). Programa turi analizuoti k (1 ≤ k ≤ 10) tokių žemės plotų nuotraukų. Duomenys surašyti tekstiniame faile U3.txt, kur pirmoje eilutėje yra k. Toliau – kiekvieno stačiakampio duomenys: pirmoje stačiakampio aprašo eilutėje yra n ir m reikšmės, o kitose eilutėse – stačiakampio langelių reikšmės eilutėmis. Tamsų langelį atitinka simbolis ‘1’, o šviesų ‘0‘. Rezultatai. Ekrane spausdinti kiekvienoje eilutėje po du skaičius: kiekvieno paviršiaus ploto salų skaičių ir didžiausios salos langelių skaičių.

Fotografijos pavyzdys U3.txt Ekrane

Fotografija 10 x 7 prieš ją koduojant skaitmenimis (faile trečia koduotė)

3 2 6 110100 000000 9 4 1000 1000 0110 1100 1100 0000 1010 1000 0000 10 7 0100110 0111000 0010110 1000000 1011100 1001110 0011000 1000100 0000100 0000000

2 2 3 8 4 10

Page 33: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Suvalkijos programuotojų konkursas KTU Marijampolė, 2008 m. kovo 14 d.

U1. 99. Sveikasis skaičius dalinasi iš 99 be liekanos, jeigu jis dalinasi iš 9 ir iš 11 be liekanos. Sveikasis skaičius dalinasi iš 9 be liekanos, jeigu jo skaitmenų suma dalinasi iš 9 be liekanos. Sveikasis skaičius dalinasi iš 11 be liekanos, jeigu jo skaitmenų, esančių nelyginėse vietose, suma skiriasi nuo skaitmenų, esančių lyginėse vietose, sumos skaičiumi, kuris dalinasi iš 11 be liekanos. Tekstinio failo U1.txt pirmojoje eilutėje yra skaičius k (1 ≤ k ≤ 20), kuris nurodo, kiek yra duota didelių sveikųjų skaičių. Toliau kiekvienam dideliam skaičiui yra skiriamos dvi eilutės. Pirmojoje iš jų yra skaičius n (8 ≤ n ≤ 100), kuris nurodo, kiek skaitmenų turi antrojoje iš jų užrašytas skaičius m. Ekrane kiekvienam skaičiui m spausdinkite dalomumo iš 99 įrodymą taip, kaip parodyta pavyzdyje.

U1.txt Rezultatas ekrane 3 11 12222222111 8 15815565 30 482654853729394131687456132187

18 dalinasi is 9 0 dalinasi is 11 12222222111 dalinasi is 99 ------------------------------ 36 dalinasi is 9 4 nesidalina is 11 15815565 nesidalina is 99 ------------------------------ 142 nesidalina is 9 -16 nesidalina is 11 482654853729394131687456132187 nesidalina is 99 ------------------------------

Pastaba: rezultato pirmojoje eilutėje pirmasis skaičius 18 yra duoto skaičiaus 12222222111 skaitmenų suma, o antrojoje eilutėje pirmasis skaičius 0 yra duoto skaičiaus skaitmenų, esančių nelyginėse vietose, sumos ir skaitmenų, esančių lyginėse vietose, sumos skirtumas. Kitose rezultato eilutėse skaičių prasmė analogiška.

U2. Dėžutės. Atvežtas prekes dėžutėse krovėjai sudėjo į lentyną viena eile. Vadybininkas paprašė pardavėjo perdėlioti dėžutes taip, kad dėžutės, kuriose yra kompiuterio klaviatūros, būtų sudėtos iš eilės. Dėliojant galima sukeisti vienu metu bet kurias dvi dėžutes. Parašykite programą, kuri nustatytų, kiek mažiausiai keitimų reikia padaryti kiekvienoje duotoje lentynoje atskirai, kad dėžutės su klaviatūromis būtų sudėtos iš eilės. Tekstiniame faile U2.txt pirmoje eilutėje yra lentynų skaičius n (1 ≤ n ≤ 100). Toliau kiekvienos lentynos duomenims yra skiriamos dvi eilutės. Pirmoje iš jų yra lentynos dėžučių skaičius d (1 ≤ d ≤ 1000). Antroje iš jų yra surašytos dėžutės, kur raide K yra pažymėtos dėžutės su klaviatūra ir raide O – kitos dėžutės. Ekrane spausdinkite kiekvienai lentynai suskaičiuotą minimalų perdėliojimų skaičių po vieną eilutėje.

U2.txt Ekrane Paaiškinimas 5 7 KOOKOKO 9 KKOOKKKOO 1 O 1 K 2 OK

1 2 0 0 0

Perstačius gausime sekas (tamsiau pažymėti keitimai), pavyzdžiui, tokias (galimi ir kiti variantai): OOOKKKO OOKKKKKOO O K OK

U3. Stotelės. Tekstiniame faile U3.txt yra surašyta informacija apie miesto visuomeninio transporto stoteles. Pirmoje failo eilutėje yra užrašytas autobusų stotelių skaičius n (2 ≤ n ≤ 500). Sekančiose eilutėse užrašyta stotelės pavadinimas, autobusų maršrutų skaičius ir autobusų, kurie sustoja toje stotelėje, maršrutiniai numeriai (1 ≤ maršruto numeris ≤ 50), išdėstyti didėjimo tvarka (Pastaba: nebūtinai numeriai eina iš eilės ir prasideda vienetu). Stotelės pavadinimas sudarytas tik iš lotyniškų raidžių ir jo ilgis neviršija 15 simbolių. Stotelėje gali sustoti ne daugiau, kaip dešimties maršrutų autobusai. Parašyti programą, kuri rastų ir ekrane pateiktų:

1. Stotelės, kurioje sustoja daugiausia autobusų, pavadinimą. Jeigu yra kelios, rasti visas. 2. Kiek autobusų maršrutų yra mieste. 3. Kurio maršruto autobusai stoja daugiausiai kartų. Jei yra ne vienas, rasti visus. 4. Dviejų stotelių, kuriose sustoja daugiausiai autobusų, turinčių tuos pačius maršrutinius numerius, pavadinimus. Jeigu

tokios poros nėra, spausdinti – ‘NERA‘. Atsakymus spausdinti taip, kaip parodyta rezultatų pavyzdyje.

U3.txt Rezultatų ekrane pavyzdys 7 Saules 7 3 4 7 8 12 15 16 Studentu 7 4 10 11 12 17 18 20 Sporto 5 3 4 12 13 15 Gedimino 7 6 7 10 12 17 20 25 Daukanto 6 6 7 10 12 17 20 Maironio 5 7 10 12 17 20 Birstono 7 2 3 6 12 13 17 20

1. Saules Studentu Gedimino Birstono 2. 16 3. 12 4. Gedimino Daukanto

Page 34: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Žemaitijos programuotojų konkursas KTU Kuršėnai, 2008 m. balandžio 11 d.

U1. Stačiakampiai. Yra n (1 ≤ n ≤ 100) įvairių matmenų stačiakampių popieriaus lapų. Kiekvienas lapas dviem tiesėmis padalintas į keturias stačiakampes dalis, kurių ilgiai ir pločiai yra žinomi (ilgis ≥ plotis). Reikia nustatyti pradinių stačiakampių matmenis. Duomenys. Tekstiniame faile U1.txt yra pradiniai duomenys. Pirmoje eilutėje yra n reikšmė, kiekvienoje kitoje eilutėje yra vieno lapo dalių matmenys: pirmos dalies ilgis ir plotis, antros dalies ilgis ir plotis, trečios dalies ilgis ir plotis, ketvirtos dalies ilgis ir plotis. Visi matmenys – sveikieji skaičiai, skiriami tarpais.

U1.txt Ekrane 2 5 2 4 2 5 3 4 3

9 5 Rezultatai. Ekrane spausdinkite iš dalių sudėtų pradinių stačiakampių

matmenis (ilgį ir plotį). Pastaba: į vieną stačiakampį dedamos 4 dalys, kurių matmenys užrašyti toje pačioje eilutėje.

3 2 8 3 7 2 8 7

U2. Kodas. Duotas sakinys, užimantis vieną eilutę ir pasibaigiantis tašku. Sakinį sudaro tik žodžiai. Gretimi žodžiai skiriami vienu tarpu. Reikia atspausdinti kiekvieną žodį atskiroje eilutėje, žodžio raides, pakeičiant nurodytu kodu. Duomenys. Sakinys yra tekstiniame faile U2.txt. Visų reikalingų raidžių kodai abėcėlės tvarka yra tekstiniame faile U2kodai.txt. Pirmasis skaičius faile nurodo, kiek bus eilučių. Vieną eilutę sudaro raidė ir jos kodas, atskirtas vienu tarpu. Kodo ilgis svyruoja nuo 1 iki 4 simbolių. Rezultatai. Ekrane spausdinkite kiekvieną pradinio teksto žodį, pakeistą kodais, naujoje eilutėje. Raidžių kodai vienas nuo kito atskiriami vienu tarpu.

U2.txt U2kodai.txt Atsakymas SVEIKI IR SUDIE. 8

D -** E * I ** K -*- R *-* S *** U **- V ***-

*** ***- * ** -*- ** ** *-* *** **- -** ** *

U3. Atilos žirgas. Šachmatų lentoje stovi baltasis žirgas ir juodasis karalius. Kai kurie lentos laukai yra užimti. Žirgas privalo pasiekti karalių, jį kirsti ir sugrįžti į pradinę padėtį. Kaip žirgas gali eiti parodyta pavyzdyje. Jis negali eiti į užimtus langelius, o taip pat į jau vaikščiotus langelius Pavyzdžiui, šachmatų lenta, kur K – karalius, Z – žirgas, U – užimtas langelis. Atsakymo dalyje skaičiais pažymėti žirgo ėjimai, 3 nėra, nes tas ėjimas kerta karalių, ir nėra 6, nes tuo ėjimu žirgas grįžta į pradinę padėtį.

Duomenys Atsakymas Žirgo ėjimai 2 K U K U 1 U U U U U U U U Z Z 4 Z 5

10 10

Duomenys. Tekstiniame faile U3.txt yra 8x8 lentelė, kuri užpildyta simboliais: 0 – laisvas langelis, K – karalius, Z – žirgas, U – užimtas langelis. Simboliai skiriami vienu tarpu. Rezultatai. Ekrane spausdinkite atsakymo lentelę, kurioje sunumeruokite žirgo ėjimus, kaip parodyta pavyzdyje. Kad lentelė būtų lengviau skaitoma vietoje nulių spausdinkite brūkšnelį. Stulpeliai vienas nuo kito skiriami vienu tarpu. Sunumeruokite stulpelius bei eilutes.

U3.txt Rezultatas 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 K U 0 0 0 0 0 0 0 U U U U 0 0 0 0 0 0 Z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1 2 3 4 5 6 7 8 1 - - 2 - - - - - 2 - - - - - - - - 3 - K U 1 - - - - 4 - - U U U U - - 5 4 - - - Z - - - 6 - - 5 - - - - - 7 - - - - - - - - 8 - - - - - - - -

Page 35: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dr. J.Kazicko programavimo konkursas KTU Kaunas, 2008 m. balandžio 19 d.

U1. Skaičiavimo sistemos. Duotas sveikasis skaičius sk (1 ≤ sk ≤ 2147483647) dešimtainėje skaičiavimo sistemoje ir skaičiavimo sistemos pagrindas p (2 ≤ p ≤ 36). Parašykite programą, kuri pervestų dešimtainį skaičių į nurodytą skaičiavimo sistemą. Skaičiavimo sistemoms, kurių pagrindas didesnis už 10, naudokite lotyniškų raidžių simbolius (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z) iš eilės tiek, kiek reikia (pvz., kai p=20 naudojami skaitmenys 0..9 ir raidės A..J). Pervedant sveikąjį dešimtainį skaičių į kitą skaičiavimo sistemą naudojama tokia veiksmų seka:

- dešimtainis skaičius dalinamas iš pagrindo, dalybos rezultatas ir liekana atsimenami; - dalybos rezultatas dalinamas, atsimenant dalybos liekanas, iš pagrindo tol, kol rezultatas tampa lygus nuliui; - gautos liekanos ir yra duotos skaičiavimo sistemos skaičius, kur pirmoji liekana yra jauniausia skaičiaus skiltis,

o paskutinioji liekana yra vyriausia skaičiaus skiltis (pvz., skaičiuje 12345 vienetas yra vyriausia skiltis, o penki – jauniausia).

Duomenys. Tekstiniame faile U1.txt yra pradiniai duomenys. Pirmoje eilutėje yra parašyta kiek skaičių reikės paversti į kitas skaičiavimo sistemas. Kiekvienoje kitoje eilutėje yra skaičius, kurį reikia paversti, ir sistemos, į kurią reikia paversti, pagrindas, atskirti tarpu. Rezultatai. Ekrane spausdinkite skaičius nurodytoje skaičiavimo siste-moje, kiekvieną vis kitoje eilutėje.

U2. Minimalus padengimas. Duota atkarpa [0, M] (1 ≤ M ≤ 1000) ir pilnai šią atkarpą padengiantys segmentai [Ki, Di], 0 ≤ Ki < Di ≤ M, kur M, Ki, Di – sveikieji skaičiai. Duomenys. Tekstinio failo U2.txt pirmojoje eilutėje duotas skaičius M ir segmentų skaičius N (1 < N ≤ 100). Sekančiose failo eilutėse surašytos skaičių Ki ir Di (i = 1..N) poros. Rezultatai. Parašykite programą, kuri ekrane spaus-dintų mažiausią skaičių segmentų, pilnai paden-giančių atkarpą [0, M], ir pačius segmentus, kaip parodyta pavyzdyje.

U3. Labirintas. Labirintui skirtas stačiakampis žemės plotas padalintas į lygius kvadratus, kurių matmenys yra 2 m × 2 m. Kai kuriuose kvadratuose yra 1 m aukščio blokai, sudarantys labirinto sienas. Labirintas turi vieną įėjimą ir vieną išėjimą. Administracija nusprendė nudažyti lankytojams matomas labirinto sienas. Kiekviena siena bus dažoma skirtinga spalva. Reikia parašyti programą, kuri rastų: a) sienų skaičių; b) visų sienų plotus (didėjimo tvarka); c) ilgiausios sienos plotą; d) bendrą visų sienų plotą. Duomenys. Labirintas vaizduojamas matrica L(n, m), kur 3 ≤ n, m ≤ 50, o Li,j = ”.” (taškas), jei atitinkamas labirinto kvadratas tuščias ir Li,j = ”*” (žvaigždutė), jei atitinkame labirinto kvadrate yra blokas. Tekstinio failo U3.txt pirmojoje eilutėje yra n, m reikšmės, atskirtos tarpu, kitose eilutėse – matricos L elementai, išdėstyti eilutėmis be tarpų. Rezultatai. Parašykite programą, kuri ekrane spausdintų ieškomus dydžius taip, kaip parodyta pavyzdyje.

Labirinto pavyzdys U3.txt Rezultatas ekrane

7 8 * * * * * * * ** . . * . . . .* . . . . * . ** . . . . * . ** . . . . . . ** . . . . . . ** . * * * * * *

a) Sienu skaicius: 14 b) Sienu plotai: 2 2 2 2 2 2 2 4 4 4 8 8 10 12 c) Ilgiausios sienos plotas: 12 kv.m.d) Bendras plotas: 64 kv. m.

U1.txt Ekrane 3 13 3 15835 24 976421612 36

111 13BJ G5C3QK

U2.txt Rezultatas ekrane 10 6 0 1 1 5 2 7 4 6 8 9 7 10

4 0 1 1 5 2 7 7 10

Page 36: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Aukštaitijos programuotojų konkursas KTU Pasvalys, 2009 m. sausio 30 d.

U1. Merseno skaičius. Merseno skaičius – tai pirminis skaičius, kurį galima išreikšti formule 2p-1, kur p taip pat pirminis skaičius. Nustatykite Merseno skaičių seką, neviršijant duoto p. Pavyzdžiui, kai p = 7, tai Merseno skaičių seka 3, 7, 31, 127.

Duomenys. p įvedamas klaviatūra (1 ≤ p ≤ 30).

Rezultatai. Gautą skaičių seką spausdinkite ekrane.

U2. Stačiakampiai ir taškai. Stačiakampėje koordinačių plokštumoje yra nubraižyta n (1 ≤ n ≤ 100) stačiakampių, kurių kraštinės yra lygiagrečios koordinačių ašims ir padėta m (1 ≤ m ≤ 1000) taškų. Rasti, keliems stačiakampiams priklauso kiekvienas iš šių taškų.

Duomenys. Tekstiniame faile ‘U2.txt‘ pirmoje eilutėje užrašytas sveikasis skaičius m. Toliau m eilutėse yra taškų koordinatės (xt, yt) (po 2 sveikuosius skaičius). Po to yra užrašytas sveikasis skaičius n. Sekančiose n eilutėse yra stačiakampių priešingų viršūnių koordinatės (x1, y1) ir (x2, y2) (po 4 sveikuosius skaičius).

Rezultatai. Ekrane užrašyti taškų eilės numerius (duomenų faile pateikta seka) ir keliems stačiakampiams kiekvienas jų priklauso.

U2.txt Ekranas 5 7 3 2 2 1 7 7 –2 8 -3 4 -5 6 4 2 8 7 2 -3 9 1 5 5 -3 -4 3 3

1 2 2 3 3 0 4 1 5 1

U3. Rainio kavinė. Kavinė dirba nuo 12 val. iki 24 val. Kavinės apsauga registruoja kiekvieną lankytoją, kuris eina pro duris. Užrašo jo vardą ir laiką, tačiau nepažymi, ar jis įėjo, ar išėjo. Kriminalistus domina, kas buvo tą dieną kavinėje nurodytu laiku. Parašykite programą, kuri sudarytų sąrašus buvusių kavinėje lankytojų tais laiko momentais, kurie domina kriminalistus. Kriminalistai savo pageidavimą gali pateikti nebūtinai pasibaigus dienai.

Duomenys. Tekstiniame faile ′U3.txt′ pirmoje eilutėje yra du sveikieji skaičiai n (1 ≤ n ≤ 100) ir m (1 ≤ m ≤ 10). Pirmasis rodo, kiek įrašų yra kriminalistų pasirodymo metu apsaugos žurnale, o antrasis – kiek yra kriminalistus dominančių laiko momentų. Faile tolesnėse n eilučių yra surašyti apsaugos žurnalo duomenys: lankytojo vardas (pirmos 10 pozicijų) ir laikas. Po to yra m eilučių, kuriose surašyti kriminalistų laikai, po vieną eilutėje. Laikas nurodomas tokiu formatu vv:mm:ss (valandos, minutės, sekundės).

Rezultatai. Ekrane reikia surašyti m eilučių, kurių kiekvienoje būtų atsakymas į kriminalisto nurodytą laiką užklausos duomenų faile seka. Atsakymą sudaro: skaičius, kuris rodo, kiek tuo metu kavinėje buvo lankytojų, ir lankytojų vardų, skiriamų bent vienu tarpu, sąrašas. Jeigu duotu laiko momentu lankytojas stovi ant slenksčio (nesvarbu, ar įeina, ar išeina), tai laikoma, kad jis yra kavinėje. Jeigu kavinėje nebuvo nei vieno lankytojo, tuomet spausdinti tik skaičių 0 (nulis).

U3.txt Ekranas 10 3 Algis 12:00:10 Petras 12:01:15 Algis 15:15:02 Rimas 16:19:59 Algis 17:02:00 Algis 17:42:00 Rimas 17:43:00 Algis 19:52:00 Petras 20:00:59 Algis 20:02:00 12:01:12 16:20:15 20:02:10

1 Algis 2 Petras Rimas 0

Page 37: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dzūkijos programuotojų konkursas KTU Druskininkai, 2009 m. sausio 23 d.

U1. Dėžes. Duoti trijų tuščių dėžių su dangčiais matmenys: ilgis, plotis, aukštis ir sienelės storis (4 sveikieji skaičiai). Ar galima šias dėžes pilnai sudėti vieną į kitą? Dėliojant dėžes priimame, kad į vieną dėžę galima įdėti tik vieną dėžę. Dėžes galima vartyti. Visų sudėtų dėžių gretimos sienelės turi būti tarpusavyje lygiagrečios. Visos dėžės turi užsidaryti.

Duomenys. Duomenų faile „U1.txt“ yra trijų dėžių matmenys: ilgis, plotis, aukštis ir sienelės storis. Iš viso 3 eilutės po 4 skaičius. Pirmoje eilutėje - pirmos dėžės duomenys, antroje eilutėje – antros dėžės duomenys, trečioje eilutėje – trečios dėžės duomenys.

Rezultatai. Ekrane eilės tvarka parašykite dėžių numerius tokia seka, kokia jos buvo viena į kitą sudėtos, arba, jei taip sudėti negalima, išveskite pranešimą „Negalima“.

U1.txt Rezultatai ekrane 80 50 60 5 50 30 40 3 90 100 70 5

2 1 3

60 30 50 3 90 30 60 6 80 50 60 6

Negalima

U2. Skaičių seka. Tomukas labai smalsus. Knygoje „Įdomioji matematika“ rado tokią jį sudominusią skaičių seką. Pirmasis sekos skaičius yra 1, o antrasis – 2. Kiekvienas sekantis skaičius yra mažiausias galimas teigiamas sveikas skaičius, jeigu, tokio skaičiaus sekoje dar nebuvo ir jis turi bendrą daliklį su prieš jį esančiu sekos nariu. Pavyzdžiui, pirmi septyni sekos skaičiai yra tokie: 1, 2, 4, 6, 3, 9, 12. Tomukas nori sužinoti, koks bus N-sis sekos skaičius (1 ≤ N ≤ 200). Parašykite programą, kuri ekrane spausdintų atsakymus, jeigu Tomukas pateikia kelias N reikšmes.

Duomenys. Tekstiniame faile ′U2.txt′ pirmoje eilutėje yra Tomuko norų skaičius k (1 ≤ k ≤ 20), o toliau kiekvienoje eilutėje po vieną N reikšmę.

Rezultatai. Kiekvienai N reikšmei ekrane parašykite atsakymą: eilutėje du skaičiai – N reikšmė ir sekos skaičiaus reikšmė. N reikšmė ir atsakymai pateikiami ta pačia tvarka. Toliau po penkis skaičius eilutėje spausdinkite ilgiausią N seką.

U2.txt Ekrane 3 10 5 7

10 5 5 3 7 12 1 2 4 6 3 9 12 8 10 5

U3. Apskritimas. Turime kvadrato formos languoto popieriaus lapą. Į lapo centre esantį langelių linijų susikirtimą statoma skriestuvo kojelė. Brėžiamas apskritimas, siekiantis lapo kraštus. Sunumeruokite, pradedant nuo 1, languoto popieriaus lapo langelius, pilnai patenkančius į apskritimo vidų, o kitiems langeliams priskirkite po 0. Numeravimo tvarka nėra svarbi. Atvaizduokite languoto popieriaus lapą matrica.

Spindulio r (r∈N) dydis nurodomas langelių kiekiu. Pavyzdžiui, kai r yra 5, matrica gali būti užpildoma taip:

0 0 0 0 0 0 0 0 0 0 0 0 25 26 27 28 29 30 0 0 0 17 18 19 20 21 22 23 24 0 0 9 10 11 12 13 14 15 16 0 0 1 2 3 4 5 6 7 8 0 0 31 32 33 34 35 36 37 38 0 0 39 40 41 42 43 44 45 46 0 0 47 48 49 50 51 52 53 54 0 0 0 55 56 57 58 59 60 0 0 0 0 0 0 0 0 0 0 0 0

Duomenys. r įvedamas klaviatūra (1 ≤ r ≤ 16). Rezultatai. Gautą matricą spausdinkite ekrane.

Page 38: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Suvalkijos programuotojų konkursas KTU Marijampolė, 2009 m. vasario 20 d.

U1. Dalelė. Mokslininkas stebi vandens paviršiuje pakibusios kietosios dalelės judėjimą ir kas N sekundžių užrašo jos koordinates. Parašykite programą, kuri apskaičiuotų kietosios dalelės mažiausią, vidutinį, didžiausią greitį ir dalelės nukeliautą kelią.

Duomenys. Tekstiniame faile U1.txt pirmoje eilutėje užrašytas dalelės koordinačių skaičius M (1 < M ≤ 100) ir koordinačių fiksavimo intervalas N (N > 0) sekundėmis. Sekančiose failo eilutėse užrašytos dalelės koordinatės Xi ir Yi (1 ≤ i ≤ M) milimetrais (Xi ir Yi – realieji skaičiai).

Rezultatai. Ekrane spausdinkite kietosios dalelės mažiausią, vidutinį, didžiausią greitį ir dalelės nukeliautą kelią kaip nurodyta pavyzdyje.

U1.txt Ekranas

5 2 1.8 2.7 -0.5 4.3 -1.4 3.2 0.1 1.4 0.7 -0.5

Maziausias greitis: 0.71 mm/s Vidutinis greitis: 1.07 mm/s Didziausias greitis: 1.40 mm/s Nukeliautas kelias: 8.56 mm

U2. Laimingi numeriai. Bilietų numeriai numeruojami vienodo ilgio skaitmenų seka. Sekos ilgis yra 2N. Bilietas vadinamas laimingu, jei pirmųjų N skaitmenų suma lygi paskutiniųjų N skaitmenų sumai. Parašykite programą, kuri nustatytų, kiek yra laimingų bilietų intervale [A, B], kai N duotas. A ir B skaičiai turi ne daugiau kaip 20 skaitmenų.

Duomenys. Duomenys įvedami klaviatūra. Pirmiausia įvedate N reikšmę, o po to intervalo [A, B] reikšmes.

Rezultatai. Ekrane spausdinkite suskaičiuotą laimingų bilietų kiekį ir tekstą „laimingi bilietai“.

Duomenys Ekranas

1 01 99

9 laimingi bilietai

U3. Žodžiai. Languoto popieriaus lape, kuriame yra N (1 ≤ N ≤ 20) eilučių ir M (1 ≤ M ≤ 20) stulpelių, yra surašytos didžiosios lotyniškos raidės ir „žvaigždutės“ (*). Duota K (1 ≤ K ≤ 20) žodžių. Parašykite programą, kuri rastų, kiek kartų kiekvienas iš šių žodžių yra atkartotas popieriaus lape. Žodžiai ieškomi eilutėse - iš kairės į dešinę ir stulpeliuose - nuo viršaus žemyn. Lape žodžiai iš abiejų pusių yra išskirti „žvaigždutėmis“ („žvaigždučių“ gali nebūti, jei žodis lape prasideda eilutės arba stulpelio pradžioje ir/arba, jei žodis pasibaigia eilutės arba stulpelio pabaigoje). Duomenys. Tekstiniame faile U3.txt pirmoje eilutėje užrašyti sveikieji skaičiai N ir M. Toliau N eilutėse yra po M raidžių ir/arba „žvaigždučių“. Po to yra užrašytas sveikasis skaičius K. Sekančiose K eilutėse yra užrašyti žodžiai. Rezultatai. Ekrane eilutėmis spausdinkite žodį ir kiek kartų jis popieriaus lape atkartotas.

U3.txt Ekranas

10 20 XXXXXXXXXXXXXXXXXXXX YRA**KINAS***AAAAAAX YAANAAAAAAAAIAAAAAAX ABRAKADABRA*NAMAS*AX *AAMAAAAAAAAKAAAAAAX N*LAGAMINAS*INKILAS* AAASAAAAAAAALAAAAAAX MAA*AAAA***LAPAS*XXX AAAA*LANGAS*SAAAAAXX SYYYYYYYYYYY*A*NAMAS 5 NAMAS LAGAMINAS AS INKILAS ABRAKADABRA

NAMAS 4 LAGAMINAS 1 AS 0 INKILAS 2 ABRAKADABRA 1

Page 39: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Žemaitijos programuotojų konkursas KTU Kuršėnai, 2009 m. vasario 27 d.

U1. Faktorialas. Natūraliojo skaičiaus faktorialas yra natūraliųjų skaičių nuo 1 iki N sandauga. Parašykite programą, kuri surastų, kokio didžiausio skaičiaus N faktorialą galima užrašyti kaip skaičių, turintį M skaitmenų.

Duomenys. Skaičius M (1 ≤ M ≤ 20) įvedamas klaviatūra.

Rezultatai. Spausdinti ekrane surastą skaičių N ir jo faktorialą.

Klaviatūra Ekranas 3 Skaičius N : 6

Faktorialas : 720

U2. Jungikliai. Elektros grandinėje yra nuosekliai įrengta N jungiklių. Kiekvienas jungiklis gali būti įjungtas arba išjungtas. Grandinė visada yra prijungta prie maitinimo šaltinio. Parašykite programą, kuri rastų, kada elektros grandinėje degs lemputė. Lemputė degs, jeigu visi jungikliai yra įjungti. Pradiniu laiko momentu ir matavimo pabaigoje visi jungikliai yra išjungti.

Duomenys. Duomenų failo U2.txt pirmoje eilutėje įrašytas jungiklių skaičius N (1 ≤ N ≤ 100). Sekančiose eilutėse įrašytas kiekvieno jungiklio perjungimų skaičius M (2 ≤ M ≤ 50) ir perjungimo laikai Ti (0 < Ti ≤ 3600) didėjimo tvarka, matuojant sekundėmis nuo matavimų pradžios. Perjungimo laikai duoti poromis: įjungimo laikas ir išjungimo laikas. Visi duoti skaičiai yra sveikieji.

Rezultatai. Spausdinti ekrane, kaip parodyta pavyzdyje, kiek kartų užsidegs lemputė ir kada (pradžios laikas ir pabaigos laikas), jei užsidegs.

U2.txt Ekranas 3 6 10 20 40 80 100 250 2 50 200 4 5 100 150 300

2 50 80 150 200

U3. Kompiuterių tinklas. Kompiuterių tinklas „auginamas“ jungiant naują kompiuterį tik prie vieno iš tinklo kompiuterių. Prie bet kurio tinkle esančio kompiuterio gali būti prijungta iki 3 naujų kompiuterių (prie 1-ojo – iki keturių). Kompiuterio numeris tinkle – tai jo įtraukimo į tinklą eilės numeris (1..100). Kompiuterių tinklą nusako tinklo žemėlapis ir tinklo protokolas. Tinklo žemėlapis – tai plokštumoje surašyti kompiuterių numeriai, tarp sujungtų kompiuterių padedant vertikalų ar horizontalų brūkšnelį. Tinklo protokolas – tai sveikųjų skaičių rinkinys P, kuriame Pi – numeris kompiuterio, prie kurio prijungtas i-asis kompiuteris. Parašykite programą, kuri atspausdintų tinklo žemėlapį, sudarytų ir atspausdintų tinklo protokolą. Duomenys. Duomenų faile U3.txt informacija apie kompiuterių tinklo žemėlapį užkoduota tokiu būdu: 1-je failo eilutėje yra N, M reikšmės (1 ≤ N, M ≤ 100). Kiekvienoje iš sekančių N eilučių yra M skaičių, atskirtų tarpais. Skaičius, < 101, – kompiuterio numeris, skaičius, = 111 reiškia ' - ' (tarpas, horizontalus brūkšnelis, tarpas), skaičius, = 222 reiškia ' | ' (tarpas, vertikalus brūkšnelis, tarpas), skaičius, = 999 reiškia ' ' (tarpas, tarpas, tarpas). Rezultatai. Spausdinti ekrane tinklo žemėlapį ir tinklo protokolą taip, kaip parodyta pavyzdyje. Kompiuterio numeris žemėlapyje turi būti spausdinamas kaip triženklis skaičius su priekyje esančiais nuliais. Protokolas spausdinamas dviejose eilutėse: 1-oje eilutėje – i reikšmės, 2-oje – Pi reikšmės.

U3.txt Ekranas 7 5 999 999 6 999 7 999 999 222 999 222 1 111 2 111 4 222 999 222 999 999 3 999 5 999 999 222 999 999 999 999 8 999 999 999 999

Zemelapis: 006 007 | | 001 - 002 - 004 | | 003 005 | 008 Protokolas: 1 2 3 4 5 6 7 8 0 1 1 2 2 2 4 3

Page 40: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dr. J. Kazicko programavimo konkursas Informatikos fakultetas

KTU

Kaunas, 2009 m. kovo 21 d.

U1. Skaičių piramid÷. Iš dviženklių sveikųjų skaičių, priklausančių intervalui [N, M], sudaryta piramid÷s siena

taip, kaip parodyta pavyzdyje. Parašykite programą, kuri rastų sienos dviženklių skaičių sumą.

Duomenys. Dviženkliai sveikieji skaičiai N, M (9 < N, M < 100; N < M) įvedami klaviatūra.

Rezultatai. Spausdinti ekrane piramid÷s sieną (pagrindą – nuo ekrano kairiojo krašto) ir jos sudarymui panaudotų

dviženklių skaičių sumą.

Klaviatūra Ekranas

10 15 10

101110

1011121110

10111213121110

101112131413121110

1011121314151413121110

Skaiciu suma: 415

U2. Faktorialas. Natūraliojo skaičiaus faktorialas yra natūraliųjų skaičių nuo 1 iki N sandauga. Parašykite

programą, kuri surastų, kokio didžiausio skaičiaus N faktorialas turi lygiai M skaitmenų. Jeigu tokio skaičiaus n÷ra,

programa į ekraną išveda vienintelį žodį 'nera'. Taip pat programa tur÷tų suskaičiuoti N faktorialo reikšm÷s

skaitmenų sumą, jeigu N buvo surastas.

Duomenys. Skaičius M (25 ≤ M ≤ 101) įvedamas klaviatūra.

Rezultatai. Spausdinti ekrane surastą skaičių N, jo faktorialo reikšmę ir faktorialo reikšm÷s skaitmenų sumą arba

žodį 'nera', kaip parodyta pavyzdyje.

Klaviatūra Ekranas

50 Skaicius N : 41

Faktorialas :

33452526613163807108170062053440751665152000000000

Suma : 144

40 nera

U3. Tvoros. Parašykite programą, kuri apskaičiuotų žem÷s sklypams aptverti

reikalingos tvoros ilgį ir kainą. Kiekvienas sklypas yra daugiakampis, kurio

kraštin÷s yra horizontalios arba vertikalios, ir kertasi tik stačiu kampu. Tarp

gretimų sklypų tveriama tik viena tvora, o kaimynai dalijasi bendrai tvoros

atkarpai tverti reikalingą pinigų sumą per pusę.

Duomenys. Tekstinio failo U3.txt pirmoje eilut÷je duotas sklypų skaičius N

(1 ≤ N ≤ 10) ir tvoros metro kaina K. Tolesn÷se failo eilut÷se duotas

kiekvieno sklypo kraštinių skaičius M (4 ≤ M ≤ 12; M – lyginis skaičius) ir

sklypo kampų koordinat÷s Xi ir Yi (1 ≤ i ≤ M) metrais (sklypo kampų

ap÷jimo tvarka – pagal laikrodžio rodyklę). Visi duoti skaičiai yra natūralieji.

Rezultatai. Spausdinkite kiekvieno sklypo perimetrą ir kiek to sklypo

šeimininkui reik÷s sumok÷ti už tvorą. Pabaigoje spausdinkite bendrą tvorų

ilgį ir kainą.

U3.txt Ekranas

3 100

4 10 70 30 70 30 40 10 40

4 30 60 50 60 50 20 30 20

6 30 70 60 70 60 10 50 10 50 60 30 60

100 8500

120 8000

180 14500

-----------

310 31000

(0,0)

(10,70) (30,70) (60,70)

(10,40) (30,40)

(30,60) (50,60)

(30,20)

(50,10)

(50,20)

(60,10)

Page 41: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Aukštaitijos programuotojų konkursas KTU Informatikos fakultetas Pasvalys, 2010 m. vasario 12 d.

U1. Pusiau pirminiai skaičiai. Pusiau pirminis skaičius – tai skaičius, kuris yra lygus dviejų bet kurių pirminių skaičių sandaugai. Raskite ir spausdinkite didėjimo tvarka visus pusiau pirminius skaičius, ne didesnius kaip duotas sveikasis skaičius p (4 ≤ p ≤ 300), ir jų pirminius daugiklius. Duomenys. Skaičius p įvedamas klaviatūra. Rezultatai. Ekrane spausdinkite surastus pusiau pirminius skaičius ir jų daugiklius, kaip parodyta pavyzdyje.

Klaviatūra Ekranas 20 4 = 2 * 2

6 = 2 * 3 9 = 3 * 3 10 = 2 * 5 14 = 2 * 7 15 = 3 * 5

U2. Užkoduoti skaičiai. Skaičiai yra užkoduoti skaitmenų seka, parašyta vienodais atstumais. Skaičių atkodavimas atliekamas šablonu su iškirptais langeliais. Šabloną uždėjus ant skaitmenų sekos pradžios, pro skylutes matoma dalis užkoduoto skaičiaus skaitmenų. Kitą dalį galima pamatyti, pastūmus šabloną per jo ilgį tolyn ir t.t. Sekos pabaigoje, jeigu šablonas ilgesnis, per iškirptus langelius nesimato nieko. Parašykite programą, kuri iškoduotų skaičius pagal šį aprašymą.

Duomenys. Tekstiniame faile U2.txt, pirmoje eilutėje užrašytas sekos ilgis k (10 ≤ k ≤ 30). Antroje eilutėje yra sekos skaitmenys atskirti tarpo simboliu. Trečioje eilutėje yra šablonų skaičius. Kitose eilutėse aprašyti šablonai, viena eilutė – vienam šablonui. Pirmasis skaičius yra šablono ilgis l (2 ≤ l ≤ 10), antrasis – iškirptų langelių skaičius n (1 ≤ n ≤ l), toliau langelių eilės numeriai (numeracija nuo vieneto). Visi skaičiai skiriami vienu tarpo simboliu. Rezultatai. Vienas šablonas atkoduoja vieną skaičių sekoje. Ekrane spausdinkite atkoduotus skaičius.

U2.txt Ekranas

14 7 3 2 5 0 4 1 9 7 3 1 2 5 4 2 5 3 1 3 4 8 5 2 3 4 7 8

725497154 32519312

U3. Giminystės ryšiai. Nagrinėjami kelių šeimų asmenų giminystės ryšiai. Šeimą sudaro mama, tėtis ir jų vaikai. Žinomi visų asmenų vardai. Visame šeimų sąraše nėra dviejų žmonių, turinčių tą patį vardą. Parašykite programą, kuri nustatytų giminystės ryšį tarp dviejų asmenų, kurių vardai yra žinomi. Nagrinėjami tokie giminystės ryšio tipai: a) brolis (arba sesuo) – sesuo (arba brolis), b) pusbrolis (arba pusseserė) – pusseserė (arba pusbrolis), c) sūnus (arba duktė) – tėtis (arba mama), d) anūkas (arba anūkė) – senelis (arba senelė), e) ne giminės (kiti atvejai). Duomenys. Duomenų faile U3.txt užrašyti nagrinėjamo šeimų sąrašo žmonių vardai ir kiti reikalingi duomenys. Pirmoje failo eilutėje užrašytas šeimų skaičius (nuo 1 iki 100) ir po tarpo – žmonių, kuriems reikia nustatyti giminystės ryšį, porų skaičius (nuo 1 iki 10). Toliau faile vienai šeimai skiriama viena eilutė: vaikų skaičius (nuo 0 iki 8), tarpelis, mamos, tėčio ir jų vaikų vardai, kiekvienam vardui skiriant 10 pozicijų. Visi vardai pradedami didžiąja raide, vyrų vardų paskutinė raidė yra 's', moterų – 'a'. Naudojamos tik lotyniško raidyno raidės. Kiekvienas žmogus gali būti tiek kieno nors tėvu (mama), tiek kieno nors vaiku. Visų žmonių vardai skirtingi. Failo gale poromis užrašyti vardai asmenų, tarp kurių poromis reikia nustatyti giminystės ryšį. Šie vardai taip pat užrašyti lotyniškomis raidėmis, kiekvienam vardui skiriama 10 pozicijų, vienoje eilutėje – abu poros vardai. Rezultatai. Ekrane vienoje eilutėje spausdinkite poros vardus, kitoje eilutėje – giminystės ryšį nusakančius žodžius (lotyniškomis raidėmis) taip, kaip parodyta pavyzdyje, t.y. porai skirkite dvi eilutes.

U3.txt Ekranas

4 2 2 Aldona Kazys Robertas Simona 3 Ona Petras Mindaugas Aldona Vitalija 3 Jolanta Saulius Vilius Rima Simas 2 Marija Mindaugas Vilma Rimas Vilma Robertas Petras Ona

Vilma : Robertas pussesere pusbrolis Petras : Ona tetis mama

Page 42: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dzūkijos programuotojų konkursas KTU Informatikos fakultetas Druskininkai, 2010 m. sausio 30 d.

U1. Skaitmenys. Sudarykite programą, kuri tarp sveikųjų teigiamų skaičių, neviršijančių N (10 ≤ N ≤ 200) ir didesnių už 9, surastų visus tokius skaičius, kurių skaitmenys sudaro nedidėjančią seką skaičiaus ribose. Seka { }xn vadinama nedidėjančia, kai su kiekviena n reikšme teisinga nelygybė x xn n+ ≤1 .

Duomenys. N įvedamas klaviatūra.

Rezultatai. Ekrane spausdinkite didėjimo tvarka skaičius, kurie tenkina sąlygą. Klaviatūra Ekranas

24 10 11 20 21 22

U2. Skaičiuotė. Vaikai žaidžia slėpynių. Išsiskaičiavimui, kas eis ieškoti, vaikai sustoja ratu. Vienas iš jų skaičiuoja pradėdamas nuo savęs laikrodžio rodyklės kryptimi. Su kiekvienu skaičiuotės žodžiu pirštu parodo į eilinį vaiką. Tam, kuriam tenka paskutinis skaičiuotės žodis, išeina iš rato. Skaičiuotę tęsia rate toliau stovintis vaikas. Paskutinis likęs ir bus tas, kuris eis ieškoti. Tačiau atsitiko taip, kad nei vienas vaikas nepasitraukė iš rato. Tęsiant skaičiuotę eilinį kartą vaikai pastebėjo, kad paskutinis skaičiuotės žodis tenka vaikui, kuriam jau reikėjo išeiti iš rato. Parašykite programą, kuri suskaičiuotų, kiek tuo metu rate yra vaikų, kuriems dar nereikėjo išeiti iš rato.

Duomenys. Tekstinio failo U2.txt pirmoje eilutėje parašytas dienų skaičius d (1 ≤ d ≤ 50 ), kada vaikai žaidė. Toliau kiekvienoje iš eilučių yra vienos dienos žaidžiančių vaikų skaičius n (1 ≤ n ≤ 50 ) ir skaičiuotėje esančių žodžių skaičius m (1 ≤ m ≤ 50 ).

Rezultatai. Ekrane spausdinti kiekvienai dienai vieną skaičių: keliems vaikams dar nereikėjo palikti rato, kai eilinio išsiskaičiavimo metu kuriam nors iš jų teko paskutinis skaičiuotės žodis antrą kartą.

U2.txt Ekranas Paaiškinimas 3 7 3 7 14 10 2

0 6 5

Tokių vaikų neliko Liko 6 vaikai Liko 5 vaikai

U3. Skaitmeninė nuotrauka. Skaitmeninėje palydovo nuotraukoje – simbolių matricoje, kuri sudaryta iš n eilučių ir m stulpelių (1 ≤ n, m ≤ 50), yra užfiksuoti tam tikros teritorijos duomenys: žemės, miško ir vandens plotai. Kiekvieną matricos elementą atitinka tam tikras teritorijos ploto vienetas – kvadratas. Vieną žemės teritorijos plotą apriboja nuotraukos kraštai ir/arba kito tipo teritorija/-os. Vieno tipo kaimyniniai plotai priklauso tai pačiai teritorijai, jeigu jie liečiasi kraštinėmis. Parašykite programą, kuri suskaičiuotų, kiek nuotraukoje yra atskirų žemės ir miško sklypų bei kiek yra vandens telkinių.

Duomenys. Duomenų failo U3.txt pirmoje eilutėje užrašyti matricos eilučių ir stulpelių skaičiai n ir m. Toliau n eilutėse ir m stulpeliuose yra simbolių matricos duomenys: simbolis z reiškia žemės ploto vienetą, m – miško ploto vienetą, v – vandens ploto vienetą.

Rezultatai. Ekrane spausdinkite teritorijos ploto pavadinimą ir kiekį. Jeigu nuotraukoje kurios nors teritorijos pavadinimo nebuvo, spausdinkite „nera“.

U3.txt Ekranas

10 16 vvvvvzzzzzzzzzzz vvvvvzzzzzzzzzzz vvvvvzzzzzzmmmmm vvvvvzzvvvvmmmmm vvvvvzzvvvvmmmmm zzzzzmmvvvvvvzzz zzzzzmmvvvvvvzzz zzzzzmmmmmmzzzzz zzzzzmmmmmmzzzzz zzzzzmmmmmmzzzzz

Zeme: 3 Miskas: 2 Vanduo: 2

6 10 zzzzzzvvvv zzzzzzvvvv zzzzzzvvvv vvvvvvzzzz vvvvvvzzzz vvvvvvzzzz

Zeme: 2 Miskas: nera Vanduo: 2

Page 43: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dzūkijos programuotojų konkursas KTU Informatikos fakultetas Druskininkai, 2010 m. sausio 30 d.

Page 44: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Suvalkijos programuotojų konkursas KTU Informatikos fakultetas Marijampolė, 2010 m. sausio 22 d.

U1. Trikampiniai skaičiai. Trikampinis skaičius yra taškų, kuriais tolygiai galima užpildyti lygiakraštį trikampį, skaičius. Pavyzdžiui, iš trijų taškų galima sudėlioti trikampį, todėl trys yra trikampinis skaičius. n-tasis trikampinis skaičius yra taškų skaičius trikampyje, kurio kraštinę sudaro n taškų. Trikampinių skaičių seka sudaroma tokiu būdu: pirmasis sekos skaičius lygus 1, antrasis – 2 didesnis už pirmąjį, trečiasis – 3 didesnis už antrąjį ir t.t. Trikampinių skaičių seka: 1, 3, 6, 10, 15... Parašykite programą, kuri nustatytų ar įvestas skaičius yra trikampinis skaičius.

Duomenys. Sveikasis teigiamas skaičius iš intervalo [1, 4294967296] įvedamas klaviatūra. Rezultatai. Ekrane spausdinamas atsakymas „Trikampinis skaicius“ arba „Ne“.

Klaviatūra Ekranas 2 6 28

Ne Trikampinis skaicius Trikampinis skaicius

U2. Spalvoti taškai. Stačiakampėje koordinačių plokštumoje yra n (1 ≤ n ≤ 100) trijų spalvų taškų. Jungiant taškus po tris, galima sudaryti daug trikampių. Sudarykite programą, kuri kiekvienos spalvos taškų tarpe, jeigu tai yra įmanoma, surastų tris taškus, kuriuos sujungę tarpusavyje gautume didžiausius lygiašonius trikampius. Apskaičiuokite gautų trikampių perimetrus.

Duomenys. Tekstiniame faile U2.txt pirmoje eilutėje užrašytas skaičius n. Toliau eilutėmis surašytos n taškų spalvos ir koordinatės (x; y – sveikieji skaičiai) (-100 ≤ x, y ≤ 100). Spalvų kodai: r – raudona, m – mėlyna, z – žalia. Rezultatai. Ekrane spausdinkite trikampio spalvos pavadinimą ir perimetrą arba „nera“.

U2.txt Ekranas 12 r -3 -2 z -6 2 r -5 10 z 0 10 m 0 12 m 1 8 r 2 3 z 4 6 z 4 11 r 2 -3 r 6 0 z 6 2

Raudona: 16 Melyna: nera Zalia: 32

U3. Skaičių magija. Duotas skaičių rinkinys, kurį sudaro 24 skaičiai. Šis rinkinys suformuotas tokiu būdu: sveikieji skaičiai nuo 1 iki 10 įtraukiami du kartus ir keturi skaičiai: 25, 50, 75, 100. Atsitiktiniu būdu iš jų išrenkami šeši skaičiai. Atsitiktiniu būdu išrenkamas skaičius nuo 100 iki 999 (ribos įtraukiamos). Panaudodami kiekvieną iš išrinktų skaičių ne daugiau kaip vieną kartą ir sujungdami juos aritmetinėmis operacijomis: +, *, -, / (galima dalinti tik tuomet, kai dalinasi be liekanos), gaukite išrinktą triženklį skaičių. Numatykite variantą, kad skaičius negali būti gautas. Sudarykite šio uždavinio sprendimui programą. Programa turi spręsti šį uždavinį ne daugiau kaip 5 sekundes. Duomenys. Tekstiniame faile U3.txt užrašyti 7 skaičiai, pirmieji 6 skaičiai – tai atsitiktinai išrinkti duomenys iš duoto skaičių rinkinio, ir jie užrašyti pirmoje eilutėje. 7-asis skaičius – tai atsitiktiniu būdu išrinktas rezultato skaičius, kurį reikia gauti, ir šis skaičius yra antroje eilutėje. Rezultatai. Ekrane eilutėmis spausdinkite atskirus veiksmus ir jų rezultatus.

U3.txt Ekranas 4 4 7 8 9 100 380

4 * 100 = 400 9 + 8 = 17 7 + 17 = 24 24 – 4 = 20 400 – 20 = 380

Page 45: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Žemaitijos programuotojų konkursas KTU Informatikos fakultetas Kuršėnai, 2010 m. sausio 15 d.

U1. Pirminiai. Petriukas, nagrinėdamas pirminius skaičius, pastebėjo, kad juos užrašius atvirkščiai ne visuomet gaunamas pirminis skaičius. Pavyzdžiui: 23 yra pirminis, tačiau 32 jau ne; 13 yra pirminis ir 31 yra pirminis. Parašykite programą, kuri ekrane spausdintų duoto skaičių intervalo [a, b] visus pirminius skaičius, šalia užrašant, ar jo atvirkščias užrašas yra pirminis skaičius, ar ne. Duomenys. Klaviatūra įvedami du intervalo skaičiai a ir b (a ≤ b, 2 ≤ a, b ≤ 10000). Rezultatai. Ekrane spausdinkite visus duoto skaičių intervalo pirminius skaičius po vieną eilutėje, šalia parašant “TAIP”, jeigu jo atvirkščias užrašas taip pat yra pirminis skaičius, ir “NE” priešingu atveju. Jeigu duotame skaičių intervale nėra nei vieno pirminio skaičiaus, tuomet spausdinkite pranešimą “NERA”.

Duomenų pavyzdys Ekranas

79 102 79 TAIP 83 NE 89 NE 97 TAIP 101 TAIP

U2. Muziejus. Muziejaus administracija nori ištirti lankytojų srautus darbo dienos (nuo 10 val. iki 20 val.) bėgyje. Buvo registruojami kiekvieno lankytojo atėjimo ir išėjimo laikai (val., min.). Laikoma, kad lankytojas kurį nors pusvalandį buvo muziejuje, jei muziejuje jis praleido bent 20 min. iš to pusvalandžio. Nagrinėjami tokie pusės valandos intervalai: 10:00-10:30, 10:30-11:00, 11:00-11:30, ..., 19:30-20:00. Parašykite programą randančią, kurį pusvalandį muziejuje buvo daugiausia lankytojų. Jei keli tokie laiko intervalai, raskite tą, kuris vėliausias. Duomenys. Duomenų faile U2.txt yra tokia informacija: pirmoje failo eilutėje yra muziejų per dieną aplankiusių žmonių kiekis N (1 ≤ N ≤ 2000), toliau po vieną eilutę skiriama kiekvieno lankytojo atvykimo ir išvykimo laikams užrašyti, nurodant val. ir min. (keturi sveikieji skaičiai, atskirti tarpais). Rezultatai. Ekrane spausdinkite rasto laiko intervalo pradžią ir pabaigą bei rastą lankytojų skaičių taip, kaip parodyta pavyzdyje.

U2.txt Ekranas 8 10 35 12 15 10 15 14 10 12 0 15 25 13 10 16 30 12 25 15 10 14 56 15 5 13 42 16 23 15 0 17 35

Laikas: 15:00 – 15:30 Lankytoju sk.: 4

U3. Moduliai. Studentas studijuoja informatiką universitete. Visi informatikos moduliai yra pasirenkami. Visus modulius reikia išklausyti. Kai kuriuos modulius galima rinktis tik tuomet, kai išklausyti jau tam tikri moduliai. Studentui reikia susidaryti nuosavą studijų programą, kurioje moduliai būtų išdėstyti į sąrašą, kuriame toliau stovintys moduliai būtų priklausomi tik nuo anksčiau stovinčių modulių. Parašykite programą, kuri sudarytų bent vieną modulių priklausomybės sąrašą. Duomenys. Duomenų faile U3.txt yra informacija apie modulius. Pirmoje failo eilutėje nurodytas modulių kiekis N (1 ≤ N ≤ 50). Tolesnėse eilutėse informacija apie modulius: modulio kodas (4 simboliai), modulio pavadinimas (30 simbolių), kiekis modulių, nuo kurių priklauso šio modulio studijos, priklausomų modulių kodai. Eilutėje vienus duomenis nuo kitų skiria vienas tarpas Rezultatai. Ekrane spausdinkite modulių priklausomybės sąrašą, kuriame nurodysite modulio kodą ir modulio pavadinimą.

U3.txt Ekranas 9 IF01 Programavimo įvadas 0 IF02 Diskrečioji matematika 1 IF01 IF03 Duomenų struktūros 2 IF01 IF02 IF04 Skaitmeninė logika 0 IF05 Matematinė logika 1 IF04 IF06 Operacijų optimizavimas 1 IF05 IF07 Algoritmų analizė 2 IF03 IF06 IF08 Asemblerio kalba 1 IF03 IF09 Operacinės sistemos 2 IF07 IF08

IF01 Programavimo įvadas IF04 Skaitmeninė logika IF02 Diskrečioji matematika IF03 Duomenų struktūros IF08 Asemblerio kalba IF05 Matematinė logika IF06 Operacijų optimizavimas IF07 Algoritmų analizė IF09 Operacinės sistemos

Page 46: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dr. J. Kazicko programavimo konkursas Informatikos fakultetas KTU

U1. Skaičiai. Yra žinomos dviejų sveikųjų skaičių k ir s reikšmės (1 ≤ k ≤ 10, 1 ≤ s ≤ 100). Raskite didžiausią ir mažiausią skaičius, kurių kiekvienas būtų sudarytas iš skirtingų skaitmenų, kiekvienas turėtų k skaitmenų ir tų skaitmenų suma būtų lygi s. Duomenys. Failo U1.txt pirmoje eilutėje įrašyta, kiek yra k ir s reikšmių porų (nuo 1 iki 10). Kitose eilutėse – k ir s reikšmių poros. Vienoje eilutėje – vienos poros reikšmės, atskirtos tarpu. Rezultatai. Ekrane kiekvienai k ir s porai spausdinkite didžiausią ir mažiausią skaičius, tenkinančius aukščiau išvardintas sąlygas arba žodį „Nera“, jei tokių skaičių nėra.

U1.txt Ekranas 2 4 6 2 20

max = 3210, min = 1023 Nera

U2. Geometrinė progresija. Duotas natūraliųjų nesikartojančių skaičių, kurie visada priklausys tam tikrai geometrinei progresijai, rinkinys. Geometrinė progresija yra tokia skaičių seka, kai kiekvienas sekantis elementas yra praeito elemento ir bendro sekos daugiklio sandauga. Raskite geometrinę progresiją, kuriai priklauso visi duoto rinkinio skaičiai, jei progresijos daugikliu gali būti tik sveikasis skaičius. Spausdinkite geometrinės progresijos daugiklį. Jeigu daugikliu gali būti keletas skaičių, spausdinkite didžiausią galimą daugiklį. Taip pat spausdinkite visus rastos geometrinės progresijos narius, pradedant nuo mažiausio duoto skaičiaus ir baigiant didžiausiu duotu skaičiumi. Duomenys. Failo U2.txt pirmoje eilutėje įrašyta, kiek skaičių rinkinių duota (1 ≤ n ≤ 10). Tolesnėse failo eilutėse pirmas skaičius yra duoto skaičių rinkinio dydis (2 ≤ m ≤ 10), o kiti skaičiai – duotas skaičių rinkinys. Rezultatai. Rezultatus spausdinkite ekrane.

U2.txt Ekranas 2 3 128 8 512 4 1500 300 37500 12

Daugiklis = 4 8 32 128 512 Daugiklis = 5 12 60 300 1500 7500 37500

U3. Kvadratų kontūrai. Popieriaus lape visų kvadratų kontūrai nebaigti braižyti. Jų gali būti k (1 ≤ k ≤ 4). Yra nubrėžtas tik vienas kiekvieno kvadrato kontūrų linijos ketvirtis (viena iš keturių dalių, kurios gaunamos vertikalia ir horizontalia linijomis padalinus į lygias dalis; gali būti bet kuris). Popieriaus lapas skenuojamas ir paverčiamas skaitmeniniu n x m (2 ≤ n, m ≤ 10) dydžio atvaizdu, kuriame 0 reiškia baltą spalvą. Kitos spalvos koduojamos skaičiais, gaunamais dvejetą keliant laipsniu (2k-1, 1 ≤ k ≤ 4). Lape bus tik po vieną tos pačios spalvos kvadratą. Pradėtų brėžti ketvirčių linijos nesikerta ir neužsikloja. Mažiausio kvadrato ketvirčio liniją sudaro trys skaičiai (žr. duomenų pavyzdyje liniją, kurios spalva 1). Parašykite programą, kuri surastų ir pabaigtų braižyti kvadratų kontūrus. Kvadrato kontūrų liniją reikia pabaigti brėžti ta pačia spalva, kuria nubrėžta jo duotoji ketvirčio linija. Jeigu reikia, skaitmeninį lapą galima padidinti, tačiau tik kraštuose ir tik tiek, kad tilptų braižomo kvadrato kontūrai. Jeigu braižomų kvadratų kontūrų linijos kertasi ar užsikloja, spalvos sudedamos. Duomenys. Faile U3.txt, pirmoje eilutėje, parašytas atvaizdų skaičius. Toliau pirmojo atvaizdo eilučių ir stulpelių skaičius. Toliau eilutėmis pateikiamas lapo atvaizdas. Toliau, tokia pačia tvarka, pateikiami kitų atvaizdų duomenys.

U3.txt U3Rez.txt 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 3 3 2 2 2 2 4 4 4 6 4 4 0 0 2 4 0 0 2 0 4 0 0 2 4 0 0 2 0 4 0 0 2 4 0 0 2 0 4 0 0 2 4 0 0 2 2 6 2 2 2

Rezultatai. Rezultatus – skaitmeninius lapų atvaizdus – spausdinkite faile U3Rez.txt skirdami tuščia eilute. Skaičiams spausdinti skirkite dvi pozicijas ir skirkite tarpu.

2 2 2 1 1 0 1 5 6 0 1 0 0 0 0 1 1 0 2 2 2 4 4 4 0 0 2 0 0 4 0 0 2 0 0 4 0 0 0

4 4 4 4 4 4 0 0 0

Kaunas 2010 m. vasario 27 d.

Page 47: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Aukštaitijos programuotojų konkursas KTU Informatikos fakultetas Pasvalys, 2011 m. vasario 11 d.

U1. Įdomūs mėnesiai. Įdomus faktas apie 2010 metų spalio mėnesį. Šis spalis yra ypatingas, nes jis turi 5 penktadienius, 5 šeštadienius ir 5 sekmadienius. Parašykite programą, kuri nustatytų, kurie mėnesiai ir kuriais metais turi tokią savybę duotiems metams. Įvertinkite, kad keliamieji metai turi vieną dieną daugiau. Keliamieji metai yra tie, kurių skaičius dalijasi iš 4 be liekanos. Taip pat keliamieji metai yra paskutiniai amžiaus metai (dalijasi iš 100 be liekanos) tik tada, jei be liekanos dalijasi iš 400. Jie nustatomi taip: if (metai % 400 == 0 || (metai % 100 != 0 && metai % 4 == 0)) keliamieji; else nekeliamieji;

if (metai mod 400 = 0) OR ((metai mod 100 <> 0) AND (metai mod 4 = 0)) then keliamieji else nekeliamieji;

Duomenys. Failo U1.txt pirmoje eilutėje yra metų skaičius n (1 ≤ n ≤ 10). Toliau išvardinti metai, kuriems reikia atlikti skaičiavimus. Kiekvienoje eilutėje yra du skaičiai: metai ir tų metų sausio 1 dienos savaitės diena (pirmadienis žymimas skaitmeniu 1, antradienis – 2, ir t.t.)

U1.txt Ekranas 4 2011 6 2009 4 2010 5 2000 1

2011: 7 2009: 5 2010: 1 102000: 3 Rezultatai. Ekrane spausdinkite metus, dvitaškį ir mėnesių numerius, kurie turi

nurodytą savybę, skiriant tarpo simboliu.

U2. Mėgstami dalykai. Yra žinomi klasės mokinių apklausos rezultatai apie mokykloje dėstomus mėgstamus dalykus. Parašykite programą, kuri šiuos apklausos rezultatus – dalykus išdėstytų mėgstamumo mažėjimo tvarka.

U2.txt Ekranas 10 Lietuviu kalba 1 Anglu kalba 2 Matematika 3 Informatika 4 Fizika 5 Astronomija 6 Chemija 7 Biologija 8 Geografija 9 Istorija 10 8 Lina 3 1 2 3 Antanas 2 2 1 Martynas 4 4 3 2 1 Rasa 2 3 10 Giedrius 2 3 2 Vaidas 0 Simonas 3 10 4 1 Rita 1 6

Anglu kalba Lietuviu kalba Matematika Informatika Istorija Astronomija

Duomenys. Failo U2.txt pirmoje eilutėje yra mokykloje dėstomų dalykų skaičius n (1 ≤ n ≤ 10). Toliau išvardinti dalykai (po 15 simbolių) ir jų kodai (sveikieji skaičiai). Dalykų pavadinimai sudaryti tik iš lotyniškų raidžių. Po to yra užrašytas klasės mokinių skaičius m (1 ≤ m ≤ 30). Toliau užrašyti kiekvieno mokinio mėgstami dalykai: mokinio vardas (10 simbolių), mėgstamų dalykų skaičius k (0 ≤ k ≤ 5) ir mėgstamų dalykų kodai. Rezultatai. Ekrane spausdinkite dalykus jų mėgstamumo mažėjimo tvarka. Rezultatų viršuje turi būti daugiausia mokinių mėgstamas dalykas, apačioje – mažiausiai mėgstamas dalykas. Jeigu keli dalykai yra vienodai mėgstami, tai juos pateikite abėcėlės tvarka.

U3. Panašūs trikampiai. Stačiakampėje koordinačių plokštumoje yra nubrėžta m (1 ≤ m ≤ 10) porų panašių trikampių. Šie trikampiai neturi bendrų viršūnių. Jų kraštinės nusakomos eilės numeriu ir galų taškų koordinatėmis (x, y). Tokių kraštinių yra n (n=2⋅3⋅m). Parašykite programą, kuri nustatytų, kuriems trikampiams priklauso kraštinės ir suporuotų panašius trikampius. Trikampiai yra panašūs, jeigu vieno trikampio visos trys kraštinės proporcingos kito trikampio kraštinėms (panašių trikampių proporcijų skirtumas neturi viršyti 1.0⋅10-10).

U3.txt Ekranas 12 1 5.0 13.0 11.0 10.0 2 2.0 5.0 4.0 7.0 3 2.0 10.0 5.0 13.0 4 13.0 11.0 16.0 11.0 5 4.0 1.0 4.0 7.0 6 14.0 11.0 18.0 11.0 7 13.0 11.0 13.0 17.0 8 14.0 3.0 14.0 11.0 9 2.0 5.0 4.0 1.0 10 14.0 3.0 18.0 11.0 11 2.0 10.0 11.0 10.0

Duomenys. Failo U3.txt pirmoje eilutėje parašytas kraštinių skaičius n. Kitose eilutėse aprašytos kraštinės. Kiekvienoje eilutėje yra po penkis skaičius, atskirtus tarpo simboliu: kraštinės numeris k (1 ≤ k ≤ n), pradžios taško x ir y koordinatės ir pabaigos taško x ir y koordinatės (realieji skaičiai). Rezultatai. Ekrane spausdinami trikampius sudarančių kraštinių numeriai ir panašių trikampių numeriai. Pirmiausiai programa sunumeruoja sudarytus trikampius ir spausdina juos sudarančių kraštinių numerius. Po to, pasinaudodama trikampių numeriais, atspausdina panašių trikampių poras. Kraštinių, kurios sudaro vieną trikampį, numeriai spausdinami didėjimo tvarka. Trikampiams suteikiami numeriai pirmųjų kraštinių numerių didėjimo tvarka (Pirmoji kraštinė visada priklausys pirmajam trikampiui).

12 13.0 17.0 16.0 11.0

Trikampiai 1 : 1 3 11 2 : 2 5 9 3 : 4 7 12 4 : 6 8 10 Panasus trikampiai 1 ir 2 3 ir 4

Page 48: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dzūkijos programuotojų konkursas KTU Informatikos fakultetas Druskininkai, 2011 m. sausio 21 d.

U1.txt Ekranas U1. Temperatūros. Yra žinomi įvairių Lietuvos miestų vienos savaitės oro temperatūros rodmenys vidurdienį. 6

15 10 25 16 18 13 18 10 5 8 16 13 12 15 20 22 25 22 20 18 16 8 12 6 15 16 14 15 19 20 21 24 23 22 20

Nr: 3 -> 22 25 22 arba Nr: 5 -> 24 23 22 arba Nr: 6 -> 22 25 22 arba

Reikia rasti, kurio vieno miesto vidutinė 3-jų iš eilės einančių dienų temperatūra buvo aukščiausia. Duomenys. Failo U1.txt pirmoje eilutėje yra užrašytas Lietuvos miestų, kuriuose buvo fiksuojama temperatūra, skaičius n (1 ≤ n ≤ 50). Tolimesnėse n eilučių yra užrašyta po septynis skaičius – atitinkamo miesto oro temperatūros rodmenys.

22 25 22 15 25 22 22 Nr: 6 -> 25 22 22

3 -5 -7 -5 0 1 -6 -9 -2 -2 0 1 -4 -7 -7

Nr: 2 -> -2 0 1

Rezultatai. Ekrane spausdinkite miesto eilės numerį ir tuos tris iš eilės einančius skaičius. -8 -5 -4 -1 0 -2 -5

U2. Žalčiai ir kopėčios. Stalo žaidimas „Žalčiai ir kopėčios“ žaidžiamas kvadratinėje žaidimo lentoje, kuri padalinta į langelius. Langeliai yra sunumeruoti pradedant nuo vieneto, kaip parodyta paveiksle. Žaidime kopėčios reiškia pakilimą. Pavyzdžiui, žaidėjas, kurio žaidimo figūrėlė ėjimo pabaigoje pastatoma į 21-ą langelį, iš karto turi perkelti ją į 32-ą langelį. Žalčiai žaidime reiškia nusileidimą – ėjimą atgal iš langelio, kuriame nupiešta galva į langelį, kuriame baigiasi žalčio uodega. Pavyzdžiui, jei ėjimo pabaigoje žaidėjo figūrėlė pastatoma į 35-ą langelį, ji nedelsiant turi būti perkelta į 22-ą langelį. Parašykite programą, kuri: • suskaičiuotų, kiek žaidimo lentoje yra žalčių ir kiek kopėčių; • surastų vieną didžiausią pakilimą ir vieną

didžiausią nusileidimą, kurie matuojami langelių, žengtų pirmyn arba atgal, skaičiumi;

U2.txt Ekranas

• visoms kopėčioms ir žalčiams nustatytų, iš kurios žaidimo lentos eilės į kurią žaidimo lentos eilę pakyla bei nusileidžia žaidėjo figūrėlė.

Duomenys. Duomenų failo U2.txt pirmoje eilutėje parašytas žaidimo lentos kraštinės dydis langeliais n (3 ≤ n ≤ 20). Antroje eilutėje parašyta, kiek toliau bus duomenų (žalčių ir kopėčių kiekių suma) k (1 ≤ k ≤ 50). Kitose eilutėse yra žalčių arba kopėčių jungtys – skaičių poros. Pirmasis poros skaičius nurodo, iš kurio langelio, o antrasis – į kurį reikia pereiti. Rezultatai. Ekrane rezultatus spausdinkite taip, kaip parodyta pavyzdyje. Tolimesniuose paaiškinimuose eilučių numeriai nurodyti pagal pateiktą pavyzdį. Jeigu kopėčių (žalčių) nėra, tai pirmoje (antroje) eilutėje spausdinamas nulis, nespausdinama trečia (ketvirta) eilutė ir visai nespausdinama kopėčių (žalčių) dalis, prasidedanti žodžiu „Kopecios:“ („Zalciai:“).

Kopeciu skaicius: 5 Zalciu skaicius: 5 Didziausias pakilimas: 3 - 16 Didziausias nusileidimas: 17 – 4 Kopecios: 3 – 16: 1 – 3 5 – 7: 1 – 2 15 – 25: 3 – 5 18 – 20: 3 – 4 21 – 32: 4 – 6 Zalciai: 12 – 2: 2 – 1 14 – 11: 3 – 2 17 – 4: 3 – 1 31 – 19: 6 – 4

6 10 3 16 5 7 12 2 14 11 15 25 17 4 18 20 21 32 31 19 35 22

35 – 22: 6 – 4

U3. Šachmatai. Gamykloje yra daug robotų, kurie pagal iš anksto paruoštą programą gamina šachmatų figūras. Pagamintos figūros patenka į bendrą konteinerį, kurio duomenys automatiškai fiksuojami faile. Reikia parašyti programą, kuri pasakytų, kiek kokių figūrų yra konteineryje, kiek iš jų galima paruošti žaidimo komplektų ir kiek po to liks dar nepanaudotų figūrų.

U3.txt Ekranas Paaiškinimas Žinoma, kad žaidimo komplektą sudaro 16 pėstininkų, 4 bokštai, 4 žirgai, 4 rikiai 2 valdovės ir 2 karaliai. Pusė komplektui reikalingų figūrų bus vėliau nudažytos juodai, nes robotai gamina tik baltos spalvos figūras.

p 24 b 7 z 4

48 p p b b z z r r v k v k z z k p p r r r p p p p p p p b b b b b r r v p p p p p p p p p p

Figūrų skaičiai Komplektų skaičius

r 7 Duomenys. Failo U3.txt pirmoje eilutėje yra bendras konteineryje esančių figūrų skaičius n (1 ≤ n ≤ 1000). Kitose eilutėse surašyti bet kokia tvarka figūrų tipai, kurie žymimi tokiais simboliais: p – pėstininkas, b – bokštas, z – žirgas, r – rikis, v – valdovė, k - karalius.

v 3 k 3 1 p 8 b 3 z 0 r 3 v 1

Liko figūrų p p p

Rezultatai. Ekrane spausdinkite turimų figūrų skaičius pagal jų tipą: tipas ir skaičius, po to – kiek galima suformuoti žaidimo komplektų ir kiek kokių pagal tipą figūrų lieka. Tipų seka tokia: p, b, z, r, v, k

k 1

Page 49: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Suvalkijos programuotojų konkursas KTU Informatikos fakultetas Marijampolė, 2011 m. sausio 28 d.

U1. Trupmenos periodas. Parašykite programą, kuri surastų ir spausdintų dešimtainės trupmenos M / N periodą. Trupmena yra periodinė, jeigu dalybos rezultate skaitmenys po kablelio periodiškai kartojasi. Jeigu skaitmenys nesikartoja arba trupmena dalinasi be liekanos, spausdinkite 0. Jeigu periodo ilgis didesnis nei 10, laikoma, kad skaitmenys nesikartoja.

Duomenys. Failo U1.txt pirmoje eilutėje nurodytas trupmenų skaičius. Tolimesnėse eilutėse duota po du natūraliuosius skaičius M ir N (M, N ≤ 32767).

Rezultatas. Ekrane kiekvienai duotai skaičių porai spausdinamas dalybos rezultatas (12 skaitmenų po kablelio tikslumu) ir surastas trupmenos periodas.

U1.txt Ekrane 5 8 11 2121 90 1 7 6 2 1 17

0.727272727272 72 23.56666666667 6 0.142857142857 142857 3.000000000000 0 0.058823529412 0

U2. Anagrama. Anagrama - žodžio raidžių sukeitimas vietomis, kai sudaromas kitas prasmingas žodis. Duotas žodžių rinkinys. Suraskite, kurie žodžiai yra tarpusavyje anagramos.

Duomenys. Failo U2.txt pirmoje eilutėje nurodytas žodžių skaičius n (1 < n < 100). Tolimesnėse eilutėse išvardinti žodžiai: viena eilutė – vienas žodis. Visi žodžiai parašyti mažosiomis raidėmis.

Rezultatai. Žodžius, kurie yra tarpusavyje anagramos, spausdinkite atskirose eilutėse. Žodžius atskirkite kableliais. Po paskutinio žodžio kablelio nedėkite, bet padėkite tašką.

U2.txt Ekranas

9 ilgas gimti ligas katinas tiesinis galis teisinis sietinis migti

ilgas, ligas, galis. gimti, migti. katinas. tiesinis, teisinis, sietinis.

U3. Žaidimas „Sudoku 6×6“. Duota dalinai užpildyta lentelė su skaičiais nuo 1 iki 6. Lentelėje gali būti n (1 ≤ n ≤ 9) neužpilytų (tuščių) langelių. Žaidimo tikslas – pilnai užpildyti lentelę taip, kad bet kurioje eilutėje, stulpelyje ir bet kuriame stačiakampyje, įrėmintame dviguba linija, skaičiai nuo 1 iki 6 nesikartotų. Parašykite programą, kuri surastų trūkstamus lentelės skaičius.

Duomenys. Faile U3.txt yra surašyti žaidimo lentelės skaičiai – 6 eilutės. Kiekvienoje eilutėje po 6 skaičius. Tose vietose, kur lentelės langelis yra tuščias, faile yra užrašyta 0 (nulis).

Rezultatai. Ekrane spausdinkite pilnai užpildytos lentelės skaičius. Jeigu egzistuoja keli teisingi lentelės užpildymo variantai spausdinkite tik vieną variantą (Pastaba: visuomet bus bent vienas lentelės užpildymo variantas).

U3.txt Ekranas Duomenų pavyzdžio iliustracija 0 0 2 4 5 3 4 3 5 0 1 2 5 2 6 1 3 0 3 0 1 2 6 5 1 5 0 3 0 6 2 6 0 5 4 1

6 1 2 4 5 3 4 3 5 6 1 2 5 2 6 1 3 4 3 4 1 2 6 5 1 5 4 3 2 6 2 6 3 5 4 1

2 4 5 3

4 3 5 1 2

5 2 6 1 3

3 1 2 6 5

1 5 3 6

2 6 5 4 1

Page 50: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Žemaitijos programuotojų konkursas KTU Informatikos fakultetas Kuršėnai, 2011 m. vasario 18 d.

U1. Kvadratai. Plokštumoje yra N (2 < N < 100) stačiakampių, kurių kraštinės lygiagrečios koordinačių ašims. Kai kurie iš šių stačiakampių yra kvadratai. Kvadratams brėžiamos įstrižainės. Suraskite įstrižainių susikirtimo taškų koordinates.

Duomenys. Tekstinio failo ‘U1.txt’ pirmoje eilutėje nurodyta N reikšmė. Tolimesnėse N eilučių, kurios aprašo po vieną stačiakampį, yra po 4 sveikuosius skaičius a, b, c, d (-100 < a, b, c, d < 100, a < c, b > d), kur (a, b) žymi stačiakampio viršutinį kairįjį kampą, o (c, d) - stačiakampio apatinį dešinįjį kampą.

Rezultatai. Ekrane spausdinkite įvestas koordinates. Jei tai stačiakampis, spausdinkite „ne kvadratas“. Jei tai kvadratas ir įstrižainių susikirtimo taško koordinatės išreiškiamos sveikaisiais skaičiais, šalia spausdinkite įstrižainių susikirtimo taško koordinates. Jei tai kvadratas, tačiau įstrižainių susikirtimo taško koordinatės nėra išreiškiamos sveikaisiais skaičiais, šalia spausdinkite pranešimą „realusis“. Spausdinamus skaičius sulygiuokite.

U1.txt Ekranas

5 0 7 7 0 9 10 13 9 -11 4 2 -5 2 10 10 2 -5 4 -3 2

0 7 7 0 realusis 9 10 13 9 ne kvadratas -11 4 2 -5 ne kvadratas 2 10 10 2 6 6 -5 4 -3 2 -4 3

U2. Herono trikampiai. Herono trikampis - tai toks trikampis, kurio visų kraštinių ilgiai ir jo paties plotas yra sveikieji skaičiai. Parašykite programą, kuri spausdintų visus galimus Herono trikampius, kurių ilgiausia kraštinė yra ne didesnė už n (2 < n < 10000).

Duomenys. Klaviatūra įvedamas skaičius n, nurodantis didžiausią galimą trikampio kraštinės ilgį.

Rezultatai. Ekrane atspausdinkite trikampio kraštinių ilgius (išdėstytus mažėjimo tvarka) ir trikampio plotą. Trikampiai, kurių kraštinių ilgiai (a, b, c), (b, a, c), (b, c, a), (c, b, a), (c, a, b) yra kartotiniai. Spausdinti reikia tik vieną iš kartotinių trikampių.

Klaviatūra Ekranas 15 a b c S

------------ 5 4 3 6 10 8 6 24 13 12 5 30

(20,70) (70,70)

(60,50)

(10,30)

(20,40)

(10,50)

(60,30)

(70,40)

U3. Stačiakampiai. Duota N (1 ≤ N ≤ 50) stačiakampių, kurių kraštinės yra lygiagrečios koordinačių ašims. Raskite plokštumos sritis, kurios yra padengtos stačiakampiais M (1 ≤ M ≤ N) kartų.

Duomenys. Duomenų failo ‘U3.txt’ pirmoje eilutėje duoti skaičiai N ir M, o tolesnėse eilutėse duota po 4 skaičius x1, y1, x2, y2, kur (x1, y1) ir (x2, y2) yra stačiakampio apatiniojo kairiojo ir viršutiniojo dešiniojo kampo koordinatės (x1, y1, x2, y2 – sveikieji skaičiai; 0 ≤ x1, y1, x2, y2 ≤ 99).

Rezultatai. Ekrane spausdinkite kiekvienos nuo 1 iki M kartų padengtos srities plotą ir perimetrą, kaip parodyta pavyzdyje (sritis gali būti nejungi).

U3.txt Ekranas 2 2 10 30 60 50 20 40 70 70

1 1700 300 2 400 100

Page 51: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dr. J. Kazicko programavimo konkursas Informatikos fakultetas KTU

U1. Numeriai. Mieste pastatyta p (0 < p < 50) naujų biurų pastatų. Kiekviename i-jame pastate yra ni (0 < ni < 10) aukštų, kiekviename aukšte yra ki (0 < ki < 100) kabinetų. Pirmojo aukšto kabinetai numeruojami nuo 101, antrojo – nuo 201 ir t.t. Sudarant numerį, prie kiekvieno kabineto durų reikia pritvirtinti po tris lenteles: ant vienos lentelės užrašytas tik vienas skaitmuo. Parašykite programą, kuri suskaičiuotų, kiek reikės kiekvieno skaitmens lentelių, norint pritvirtinti numerius prie visų pastatų kabinetų durų. Lenteles reikia skaičiuoti kiekvienam pastatui atskirai.

Duomenys. Tekstiniame faile U1.txt pirmoje eilutėje užrašyta p reikšmė, kitose eilutėse užrašytos n, k reikšmių, atskirtų tarpu, poros.

Rezultatai. Ekrane kiekvienam pastatui atskirai spausdinkite skaitmenis ir jiems užrašyti reikalingų lentelių kiekius taip, kaip parodyta pavyzdyje.

U1.txt Ekranas

2 2 5 4 10

Skaitmenys: 0 1 2 3 4 5 6 7 8 9 ------------------------------ 1 pastatas: 10 7 7 2 2 2 0 0 0 0 2 pastatas: 40 18 14 14 14 4 4 4 4 4

U2. Skaičiai. Lape užrašyta n (1 <n < 50) eilučių, kuriose be tarpų surašyti sveikieji skaičiai. Yra žinoma, kad: a) eilutėje yra daugiau negu 1, bet mažiau negu 100 skaičių; b) vienas eilutės skaičius yra dviženklis, vienas – keturženklis, likę (jei yra) – triženkliai; c) kiekvieno skaičiaus pirmasis skaitmuo ≠ 0; d) dviženklis skaičius eilutėje yra pirmiau už keturženklį; e) dviženklis skaičius yra mažiausias iš galimų dviženklių toje eilutėje; f) keturženklis skaičius yra didžiausias iš galimų keturženklių toje eilutėje;

Parašykite programą, kuri atspausdintų visas eilutes su tarpais tarp skaičių.

Duomenys. Tekstiniame faile U2.txt pirmoje eilutėje užrašyta n reikšmė, kitose eilutėse – duotos skaičių eilutės. Rezultatai. Ekrane spausdinkite skaičių eilutes su tarpais tarp skaičių.

U2.txt Ekranas

2 876543210 275106278945257462516921

876 54 3210 275 10 627 8945 257 462 516 921

U3. Keitimai. Kvadratas yra padalintas į n2 (2 < n < 1000) langelių. Langeliuose gali būti įrašytas vienas iš skaičių 0, 1 arba 2. Kiekvienoje eilutėje ir kiekviename stulpelyje yra tik po vieną 1 ir po vieną 2. Kiti langeliai užpildyti 0. Keitimas - tai dviejų stulpelių arba dviejų eilučių sukeitimas vietomis. Visada egzistuoja bent viena tokių keitimų seka, po kurios, lyginant pradinį ir galutinį kvadratą, visi 1 ir 2 pasikeičia savo vietomis. Parašykite programą, kuri atspausdintų šią keitimų seką ir kvadratą, gaunamą pritaikius šią seką.

Duomenys. Tekstinio failo U3.txt pirmoje eilutėje užrašytas kvadrato eilučių (stulpelių) skaičius. Tolimesnėse eilutėse surašyta kvadrato langelių informacija.

Rezultatai. Ekrane pirmojoje eilutėje spausdinkite keitimų seką. Spausdinant seką nurodoma, kas keičiama: eilutė („E“) arba stulpelis („S“); ir su kuo keičiama: eilutės (stulpelio) numeris. Sekoje vienas keitimas nuo kito atskiriamas kableliu. Po keitimų sekos iš naujos eilutės atspausdinkite kvadratą, gaunamą pritaikius šią seką.

U3.txt Ekranas

5 0 0 1 0 2 1 0 2 0 0 0 2 0 1 0 2 0 0 0 1 0 1 0 2 0

S3-S5, E2-E4, E3-E5 0 0 2 0 1 2 0 1 0 0 0 1 0 2 0 1 0 0 0 2 0 2 0 1 0

Kaunas 2011 m. kovo 5 d.

Page 52: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Auštaitijos programuotojų konkursas KTU Informatikos fakultetas Pasvalys, 2012 m. kovo 9 d. U1. Telefonas. Miško gyventojai įsigijo telefonų stotį. Kiekvienas, norintis skambinti, turėjo susimokėti obuoliais bei riešutais. Vienas obuolys atitiko 10 riešutų. Už pokalbio sujungimą reikėjo mokėti penkis riešutus, o už kiekvieną prakalbėtą minutę – vieną obuolį. Pokalbis, kurio trukmė nuo 0 sek. iki 59 sek, laikomas vienos minutės pokalbiu, nuo 60 iki 119 sek. dviejų minučių ir t.t. Už šeštą pokalbio minutę ir kiekvieną sekančią reikėjo mokėti po 3 riešutus. Kiek už kiekvieną pokalbį zuikis Puikis turėjo susimokėti? Žinoma, kad Puikio ilgiausias pokalbis galėjo trukti ne daugiau, kaip vieną valandą. Kiek iš viso turėjo sumokėti Puikis?

U1.txt Ekranas

Duomenys. Faile U1.txt pirmoje eilutėje užrašytas pokalbių skaičius n (1 ≤ n ≤ 100). Tolesnėse n eilučių surašytos pokalbių trukmės sekundėmis po vieną skaičių eilutėje. Rezultatai. Ekrane spausdinkite kiekvieno pokalbio kainą obuoliais ir riešutais atskiromis eilutėmis. Paskutinėje eilutėje spausdinkite kiek iš viso turėjo sumokėti Puikis. Puikio mokamas sumas maksimaliai išreikškite obuoliais (riešutų skaičius negali viršyti 9).

3 15 425 120

1 5 6 4 3 5 11 4

U2. Varžtai. Motociklo surinkimui reikia n (0 < n < 90) skirtingų diametrų varžtų. Diametro d (sveikasis skaičius, 5-100) reikia r (0 < r < 100) varžtų, o gamyklos sandėlyje yra y (0 < y < 5000) šio diametro varžtų. Kiek daugiausiai motociklų galima surinkti, panaudojant sandėlyje esančius varžtus? Vietoje kai kurių diametrų varžtų leidžiama panaudoti vienetu mažesnio diametro varžtus. Tokiu būdu galima sudaryti papildomų varžtų komplektų. Reikia rasti tokių komplektų kiekį. Duomenys. Faile U2.txt pirmoje eilutėje užrašytas skirtingų diametrų kiekis n, kiekvienoje kitoje eilutėje yra varžto diametras d, reikalingas kiekis r, esamas kiekis y ir '+' arba '-' (galima arba ne panaudoti mažesnio diametro varžtą). Duomenys eilutėje skiriami tarpais. Rezultatai. Ekrane spausdinkite pagrindinių komplektų kiekį, papildomų komplektų kiekį ir sandėlio likučius diametrų didėjimo tvarka taip, kaip parodyta pavyzdyje.

U3. Paslėpti žodžiai. Lentelėje (matricoje), sudarytoje iš n eilučių ir m stulpelių (2 ≤ n, m ≤ 100), yra surašytos mažosios lotyniškos raidės. Reikia rasti lentelėje paslėptus duotus žodžius. Žodžių skaičius k (1 ≤ k < 100), o ilgis s (4 ≤ s ≤ 30). Žodžiams eilės tvarka, pradedant vienetu, suteikiami numeriai. Kiekvienas žodis lentelėje užrašytas iš kairės į dešinę dviejose eilutėse: dvi gretimos žodžio raidės yra dviejuose gretimuose stulpeliuose ir dviejose gretimose eilutėse (kaip „pjūklo dantys“). Raidė gali priklausyti tik vienam žodžiui. Nei vienas žodis negali būti kito žodžio dalimi. Surastų žodžių eilės numerius reikia surašyti į kitą tokio pačio dydžio skaičių lentelę: visuose kiekvieno žodžio raidėms atitinkamuose lentelės langeliuose įrašant žodžio eilės numerį. Į likusius lentelės langelius įrašomi nuliai. Pabaigus visų žodžių paiešką, randamos skaičių lentelės eilutėse įrašytų skaičių sumos. d i f k g i h n l s 1 - pagaminta

U2.txt Ekranas

5 10 11 45 + 8 10 40 – 5 10 34 - 6 8 25 + 9 5 7 +

0 4 0 4 0 4 0 4 0 4 20

k p e g v m e n a a 2 - daina 1 4 1 4 1 4 1 4 1 254

e v a n a u i i t p 3 - vanduo 0 3 1 3 1 3 1 0 1 0 13

Pagr. komplektu kiekis: 1 Pagalb. komplektu kiekis: 2 Likuciai (diametras kiekis) 5 4 6 1 8 2 10 12

g a a n d t o l h a 4 - kiekvienas 0 2 3 2 3 5 3 5 0 5 28

d p i b a o a a p v 5 - talpa 2 0 2 0 2 0 5 0 5 0 16

Duomenys. Tekstinio failo U3.txt pirmoje eilutėje nurodytas lentelės eilučių skaičius n ir stulpelių skaičius m. Tolimesnėse n eilučių surašytos raidės. Kiekvienoje eilutėje po m raidžių. Tolesnėje eilutėje yra užrašytas ieškomų žodžių skaičius k. Toliau kitose eilutėse yra užrašyti ieškomi žodžiai.

Rezultatai. Ekrane spausdinkite suformuotą skaičių lentelę ir skaičių lentelės kiekvienos eilutės skaičių sumą. U3.txt Ekranas

5 10 difkgihnls kpegvmenaa evanauiitp gaandtolha dpibaoaapv 5 pagaminta daina vanduo

0 4 0 4 0 4 0 4 0 4 4 1 4 1 4 1 4 1 4 1 0 3 1 3 1 3 1 0 1 0 0 2 3 2 3 5 3 5 0 5 2 0 2 0 2 0 5 0 5 0 20 25 13 28 16

kiekvienas talpa

Page 53: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dzūkijos programuotojų konkursas KTU Informatikos fakultetas Druskininkai, 2012 m. vasario 24 d.

U1. Begalin÷ eilut÷. Duota n (1 ≤ n ≤ 100) realiųjų skaičių x (-1.0 ≤ x ≤ 1.0) ir realiųjų skaičių

intervalas [-90.0, 90.0], kuriame skaičių trupmenin÷s dalys yra lygios 0 (nuliui): -90.0, -89.0, -88.0, ... 88.0, 89.0, 90.0. Kiekvienai x reikšmei apskaičiuokite funkcijos arcsin(x) reikšmę (radianais) ir ją

paverskite laipsniais: padauginkite iš skaičiaus 180 ir padalinkite iš skaičiaus 3.14159. Raskite, kuriam

intervalo skaičiui gauta reikšm÷ yra artimiausia. Funkcijos arcsin(x) reikšm÷ skaičiuojama pagal formulę:

K+⋅⋅⋅⋅+⋅⋅⋅+⋅⋅+⋅+=98

7

6

5

4

3

2

1

76

5

4

3

2

1

54

3

2

1

32

1arcsin

9753xxxx

xx

Skaičiuodami funkcijos reikšmę susumuokite 1000 šios eilut÷s narių.

Duomenys. Failo U1.txt pirmoje eilut÷je yra užrašytas skaičius n. Antroje eilut÷je yra užrašyta n realiųjų

skaičių x atskirtų tarpais.

Rezultatai. Ekrane, dviejuose stulpeliuose, spausdinkite skaičius x ir atskirtas tarpais atitinkamas artimiausias

intervalo skaičiams apskaičiuotas funkcijos reikšmes.

U1.txt Ekranas

3

0.0871557 -0.4999996 0.9659255

0.0871557 5.0

-0.4999996 -30.0

0.9659255 75.0

U2. Skaičiai. Turime n (2 ≤ n ≤ 50) kortelių. Ant kiekvienos kortel÷s užrašytas vienas sveikasis skaičius iš

intervalo nuo 1 iki 100. Pradin÷ kortelių išd÷liojimo seka atsitiktin÷. Sekoje atliekama k (1 ≤ k ≤ 50) keitimų.

Keitimas atliekamas nurodytoje sekos dalyje [a, b], kur 1 ≤ a < b ≤ n. Tos sekos nurodytos dalies kortel÷s

išd÷liojamos atvirkščia tvarka, pvz., sekoje: 15, 6, 8, 19, 22, kai duotas intervalas [2, 4], atlikus

keitimą, bus gauta seka: 15, 19, 8, 6, 22. Keitimai atliekami jų pateikimo tvarka. Kokios kortel÷s bus

nurodytose sekos vietose, atlikus visus keitimus?

Duomenys. Failo U2.txt pirmoje eilut÷je yra užrašytas kortelių skaičius n, o antroje – kortelių sekos skaičiai.

Trečioje eilut÷je užrašytas skaičius k. Toliau k eilučių, kurių kiekvienoje yra po du skaičius, reiškiančius keitimo

intervalo ribas a ir b. Toliau mus dominančių vietų skaičius. Paskutin÷je eilut÷je yra surašytos vietos, kuriose

esančių kortelių skaičiai mus domina.

Rezultatai. Kiekvienoje ekrano eilut÷je spausdinkite du skaičius: sekos vietos numerį ir toje vietoje esančios

kortel÷s skaičių.

U2.txt Ekranas

10

2 5 9 8 4 7 15 25 45 99

2

5 7

2 8

3

2 5 8

2 25

5 15

8 5

U3. Lizdai ir laidai. Gamyklos patalpų plane pažym÷tos vietos, kur pastatyti įrengimai ir įrengtas vienas elektros

lizdas. Planas skenuojamas ir paverčiamas skaitmeniniu N x M (3 ≤ N, M ≤ 10) dydžio atvaizdu, kuriame

„0“ žymi tuščią vietą, „@“ žymi pastatytą įrengimą, o „X“ žymi įrengtą elektros lizdą. Reikia nutiesti laidus tarp

įrengimų ir elektros lizdo taip, kad būtų tenkinamos šios sąlygos: 1) laidas gali eiti tik per tuščią vietą, 2) laidas gali

eiti tik horizontaliai arba vertikaliai, bet ne įstrižai, 3) prie elektros lizdo gali būti jungiama daug laidų, 4) prie

įrenginio gali būti jungiamas tik vienas laidas, 5) laidai gali šakotis, bet negali sudaryti kilpų. Raskite ir pažym÷kite

plane tokią laidų sujungimo schemą, kad bendras visų laidų ilgis būtų mažesnis nei L. Plane laidas žymimas

simboliu „*“, o laidų šakojimosi vieta žymima „+“. Laido ilgis yra lygus laido užimamų plano laukelių skaičiui.

Duomenys. Faile U3.txt pirmoje eilut÷je parašytas plano eilučių skaičius N, stulpelių skaičius M, ir didžiausias

leidžiamas plano laidų ilgis L. Toliau eilut÷mis pateikiamas plano atvaizdas.

Rezultatai. Faile Rez.txt spausdinkite laidų ilgį ir skaitmeninį plano atvaizdą su pažym÷tais laidais. Jei laidų

nutiesti taip, kad būtų tenkinamos užduotyje išvardintos sąlygos, negalima, spausdinkite 0 ir pradinį plano

skaitmeninį atvaizdą. U3.txt Rez.txt

3 4 5

X000

00@0

000@

4

X*+*

00@*

000@

U3.txt Rez.txt

4 6 6

X00000

0000@0

000000

00000@

0

X00000

0000@0

000000

00000@

Page 54: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Suvalkijos programuotojų konkursas KTU Informatikos fakultetas Marijampolė, 2012 m. sausio 20 d.

U1. Skaičiai. Duoti du skaičiai: n – sveikasis teigiamas skaičius ir m – vienas iš skaičių 10, 20, 30, ..., 100.

Parašykite programą, kuri surastų ir spausdintų skaičių, artimiausią n ir dalų iš m. Jei yra du tokie skaičiai, vienodai

nutolę nuo n, pasirinkite didesnįjį.

Duomenys. Failo U1.txt pirmoje eilutėje nurodytas skirtingų m reikšmių kiekis (<100). Kiekvienoje kitoje

eilutėje yra: m reikšmė, n reikšmių kiekis, n reikšmės. Skaičiai eilutėje skiriami tarpais. Kiekvienai n reikšmei

reikia rasti jai artimiausią skaičių, dalų iš toje eilutėje užrašytos m reikšmės.

Rezultatas. Ekrane eilutėmis spausdinti duotas ir gautas reikšmes taip, kaip parodyta pavyzdyje.

U1.txt Ekrane

2

70 3 7 13 117

50 5 45 60 73 66 51

m = 70

Duota: 7 13 117

Gauta: 0 0 140

m = 50

Duota: 45 60 73 66 51

Gauta: 50 50 50 50 50

U2. Kubų suma. Raskite sveikąjį skaičių, ne mažesnį už N, kuris dalinasi iš jo skaitmenų kubų sumos be liekanos.

Skaičius N turi M skaitmenų (1 < M < 25).

Duomenys. Faile U2.txt pirmoje eilutėje parašytas skaičių kiekis K (1 K 10), o kitose eilutėse – skaičiaus N skaitmenų skaičius M ir skaičius N.

Rezultatai. Ekrane spausdinkite rastus skaičius ir jų skaitmenų kubų sumos reikšmes, kaip parodyta pavyzdyje.

U2.txt Ekrane

2

3 201

10 2147483649

221 dalinasi be liekanos is 17

2147485284 dalinasi be liekanos is 1701

U3. Labirintas. Duotas n eilučių ir m stulpelių dydžio labirintas (n < 60, m < 60). Labirintas turi sienas ir koridorius. Duotojoje labirinto pozicijoje (i, j) siena žymima žvaigždutės simboliu ('*'), o koridorius – tarpo simboliu (' '). Labirinto atskaitos taškas yra viršutinis kairysis kampas. Stulpeliai ir eilutės numeruojami nuo

vieneto. Visas labirintas yra apribotas sienomis. Duotojoje pradinėje pozicijoje (x, y) pastatomas robotas. Robotas gali būti atsuktas į vieną iš krypčių: N – šiaurė (robotas žiūri į labirinto viršutiniąją eilutę), W – vakarai (robotas žiūri į labirinto dešinįjį stulpelį), S – pietūs (robotas žiūri į labirinto apatiniąją eilutę), E – rytai (robotas žiūri į

labirinto kairįjį stulpelį). Pradinėje pozicijoje robotas stovi atsuktas į šiaurę (N). Robotas gali judėti tik pagal

pateiktas komandas: R – pasisukti 90 laipsnių pagal laikrodžio rodyklę; L – pasisukti 90 laipsnių prieš laikrodžio rodyklę; F– judėti į priekį per vieną poziciją esama kryptimi, jei dar nepasiekta siena; jei siena ta kryptimi jau pasiekta – nieko nedaryti; Q– baigti judėjimą (spausdinti rezultatus). Parašykite programą, kuri atspausdintų galutinę roboto poziciją ir jo kryptį baigus robotui judėti pagal pateiktą

komandų seką.

Duomenys. Tekstinio failo U3.txt pirmoje eilutėje nurodytas labirinto eilučių skaičius n ir stulpelių skaičius m. Tolimesnėse n eilučių surašyta labirinto sienų ir koridorių informacija. Kiekvieną eilutę sudaro m simbolių

(stulpelių). Kitoje eilutėje pateikiama pradinė roboto pozicija x ir y. Toliau pateikiamos komados roboto judėjimui.

Komandos pateiktos vienoje eilutėje, viena nuo kitos neskiriamos jokiais skyrikliais.

Rezultatai. Ekrane reikia spausdinti galutinę roboto poziciją ir kryptį. Visi dydžiai vienas nuo kito skiriami vienu

tarpo simboliu.

U3.txt Ekranas

7 8

********

* * * **

* * *

* * ** *

* * * *

* * **

********

3 5

RRFLFFFFRFFRFFQ

5 6 W

Page 55: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Žemaitijos programuotojų konkursas KTU Informatikos fakultetas Kuršėnai, 2012 m. kovo 2 d. U1. Pirminiai skaičiai. Parašykite programą, kuri nustatytų, ar duotasis skaičius K (0 < K < 1000) gali būti

gaunamas sudėjus du pirminius skaičius. Duomenys. Tekstiniame faile ‘U1.txt’ nurodytas skaičius K.

Rezultatai. Ekrane spausdinkite duotąjį skaičių K, po kurio turi būti lygybės ženklas (=), toliau - atsakymas, ar duotasis skaičius gali būti sudarytas sudėjus du pirminius skaičius: jei negali - eilutė "NE", jei gali - tų dviejų

pirminių skaičių reikšmės su pliuso ženklu (+) tarp jų. Jei duotajam skaičiui yra keletas skirtingų pirminių skaičių

porų, reikia spausdinti visas skirtingas poras. Pirminių skaičių poroje sukeitus skaičius vietomis, nauja pora

negaunama, ir jos spausdinti nereikia. Spausdinant pirminius skaičius, visada pirmiau reikia spausdinti mažesnįjį iš

jų.

U1.txt Rezultatas 57 57 = NE 10 10 = 3 + 7

10 = 5 + 5

12 12 = 5 + 7

U2. Bilietai. Miesto viešajame transporte naudojami kelių tipų bilietai:

1. Dienos bilietas suaugusiam. Jo kaina p1. 2. Dienos bilietas vaikui. Jo kaina p2 (< 0.5 * p1). 3. Bilietas grupei, sudarytai iš 5 suaugusių žmonių. Bet kuris suaugęs žmogus gali būti keičiamas vienu arba

2 vaikais. Vadinasi, gali būti sudaryta grupė iš 10 vaikų. Bilieto kaina p3 (< 5 * p1). 4. Yra atitinkami bilietai, galiojantys 3 dienas. Jų kainos atitinkami (2 * p1) < q1 < (3 * p1), (2 * p2) < q2 <

(3 * p2), (3 * p3) < q3 (< 3 * p3). Į miestą atvyko turistų grupė, sudaryta iš M suaugusiųjų ir N vaikų. Mieste jie bus K (1≤ K ≤3) dienų ir kiekvieną

dieną naudosis viešuoju transportu. Jie visuomet visi keliaus kartu. Kokią minimalią pinigų sumą turistų grupė turi

išleisti viešajam transportui? Duomenys. Tekstinio failo ‘U2.txt’ pirmoje eilutėje nurodyta M, N, K, antrojoje eilutėje – p1, p2, p3, o trečiojoje

eilutėje – q1, q2, q3. Visi duomenys yra sveikieji skaičiai intervale nuo 1 iki 1000.

Rezultatai. Ekrano pirmojoje eilutėje spausdinkite pinigų sumą, kurią turistų grupė išleis viešajam transportui.

Tolimesnėse eilutėse (viena eilutė – vienam bilietui) spausdinkite, kiek ir kokių bilietų pirks.

U2.txt Rezultatas U2.txt Rezultatas

12 1 3

12 5 50

30 13 120

313

p1 – 0

p2 – 0

p3 – 0

q1 – 2

q2 – 1

q3 – 2

1 12 2

12 5 50

30 13 120

144

p1 – 2

p2 – 4

p3 – 2

q1 – 0

q2 – 0

q3 – 0

U3. Pilis. Pilis yra suskirstyta į MxN (M≤50, N≤50) kvadratinių celių. Kiekviena celė gali turėti nuo 0 iki 4 sienų.

Reikia surasti, kiek pilyje yra kambarių. Kambarys – tai erdvė, sudaryta iš vienos ar daugiau celių ir apribota iš visų

keturių pusių sienomis. Duomenys. Pilies planas yra tekstiniame faile ‘U3.txt’. Pirmasis skaičius – tai celių skaičius šiaurės-pietų kryptimi,

antrasis skaičius – celių skaičius vakarų-rytų kryptimi, tolesnėse eilutėse kiekvienai celei pažymėti yra skirtas

skaičius p (0≤p≤15). Šį skaičių sudaro tokių skaičių suma: 1 (jei celė turi vakarinę sieną), 2 (šiaurinę sieną), 4

(rytinę sieną), 8 (pietinę sieną). Vidinė siena priklauso abiems celėms. Piešinyje yra pilies planas pagal duomenų

failo duomenis: 1 2 3 4 5 6 7 1 2 3 4

Rezultatai. Ekrane spausdinkite pradinius duomenis ir kambarių kiekį. U3.txt Rezultatas

4

7

11 6 11 6 3 10 6

7 9 6 13 5 15 5

1 10 12 7 13 7 5

13 11 10 8 10 12 13

11 6 11 6 3 10 6

7 9 6 13 5 15 5

1 10 12 7 13 7 5

13 11 10 8 10 12 13

Kambarių kiekis 5

Page 56: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dr. J. Kazicko programavimo konkursas Informatikos fakultetas KTU

Kaunas 2012 m. kovo 17 d.

U1. Dalyba iš 7. Bet kuriam skaičiui, turinčiam daugiau nei 1 skaitmenį, galioja toks dalumo iš 7 algoritmas. Atskirkite nuo skaičiaus jo dešiniausią skaitmenį. Iš likusio skaičiaus du kartus atimkite atskirtą skaitmenį. Kartokite šiuos veiksmus tol, kol gausite vienaženklį skaičių. Jei gautas skaičius dalinasi iš septynių, tai ir pradinis skaičius dalinasi iš septynių. Naudodami šią taisyklę patikrinkite, ar duotas skaičius dalinasi iš 7. Duomenys. Iš failo nuskaitomas vienas skaičius, turintis n (1 < n < 10) skaitmenų. Rezultatai. Nuskaitę iš failo U1.txt pradinius duomenis, įrašykite į failą U1rez.txt taisyklės įrodymą ir dalybos iš 7 patikrinimo rezultatą „Nesidalina” arba „Dalinasi”, kaip parodyta lentelėje.

U1.txt U1rez.txt Skaičiavimo paaiškinimai 1234 115

1 Nesidalina

1234 -> 123 – 2 * 4 = 115 115 -> 11 – 2 * 5 = 1

Nesidalina 24570 2457

231 21 0 Dalinasi

24570 -> 2457 – 2 * 0 = 2457 2457 -> 245 – 2 * 7 = 231 231 -> 23 – 2 * 1 = 21 21 -> 2 – 2 * 1 = 0 Dalinasi

U2. "Gražūs" skaičiai. Parašykite programą, kuri spausdintų visus teigiamus skaičius, kurių skaitmenų skaičius n (1 < n < 10), o skaitmenų suma ir sandauga yra lygios. Duomenys. Klaviatūra įvedamas skaičių skaitmenų kiekis n (1 < n < 10). Rezultatai. Ekrane spausdinkite surastus skaičius, atskirdami juos vienu tarpo simboliu. Skaičius spausdinkite išdėstytus didėjimo tvarka po dešimt eilutėje.

Klaviatūra Ekranas 5

11125 11133 11152 11215 11222 11251 11313 11331 11512 11521 12115 12122 12151 12212 12221 12511 13113 13131 13311 15112 15121 15211 21115 21122 21151 21212 21221 21511 22112 22121 22211 25111 31113 31131 31311 33111 51112 51121 51211 52111

U3. Koduotas tekstas. Yra k (1 ≤ k < 90) žodžių, kurie užkoduoti n × m (2 ≤ n, m ≤ 100) matricoje kartu su kitais simboliais. Koduojamų simbolių sąrašas yra žinomas. Kiekvienas sąrašo simbolis turi savo kodą – dviženklį skaičių. Sąrašo pirmojo simbolio kodas – 11, antrojo – 12 ir t.t. Žodis gali būti užkoduotas tiek vertikaliai, tiek horizontaliai, prasidėti vienoje eilutėje ar stulpelyje, o baigtis kitoje eilutėje ar kitame stulpelyje. Tarp to paties žodžio raidžių kodų matricoje nėra kitų simbolių kodų. Žodžiai gali būti kitų žodžių dalimis, tačiau kiekvienas žodis matricoje yra tik po vieną kartą. Raskite kiekvieno žodžio pradžios eilutės ir stulpelio numerius bei kodavimo kryptį (H – horizontaliai, V – vertikaliai) toje matricos vietoje, kur jis nėra kito žodžio dalimi. Iš matricos simbolių, neįeinančių į duotus žodžius, sudėkite sakinį, skirtingose eilutėse esančius simbolių rinkinius atskirdami tarpais. Duomenys. Faile U3.txt pirmoje eilutėje yra koduo-jamų simbolių sąrašas, antroje eilutėje užrašyti kodų matricos matmenys n, m. Nuo trečiosios eilutės surašyta kodų matrica (n eilučių). Už matricos atskiroje eilutėje yra duotų žodžių skaičius k. Toliau po vieną eilutėje yra duoti žodžiai.

U3.txt Ekranas ABCDEFGHIJKLMNOPRSTUVYZ_ 5 7 21 31 19 15 24 11 28 29 28 28 19 15 24 11 30 25 34 28 19 15 27 11 14 21 24 32 17 11 19 11 25 14 11 24 16 6 VIENAS SIENA SIERA KNYGA ODA SODA

1 2 H 2 3 H 3 4 H 4 3 H 5 3 H 2 2 V K T U_ INF Rezultatai. Ekrane spausdinkite žodžių pradžių eilutės

ir stulpelio numerius, kodavimo kryptį ir atskira eilute iš likusių simbolių sudarytą sakinį.

Page 57: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Aukštaitijos programuotojų konkursas Dzūkijos programuotojų konkursas

KTU Informatikos fakultetas Pasvalys, 2013 m. vasario 15 d.

Druskininkai, 2013 m. vasario 15 d.

U1. Akvariumas. Kad žuvys gerai jaustųsi akvariume, kiekvienai žuviai reikia skirti tam tikrą minimalų kiekį

vandens. Šis kiekis apytiksliai nustatomas pagal žuvies kūno ilgį, - vienam žuvies kūno ilgio centimetrui reikia

skirti vieną litrą vandens. Kiekvienos veislės žuvys užauga ne ilgesnės, nei tam tikras maksimalus dydis: gupijos 6

cm, barbusai 5 cm, neoninės tetros 4 cm. Pirkėjas perka n (1 n 50) akvariumų ir keletą žuvų,

neviršydamas akvariumų užpildymo reikalavimų. Parašykite programą, kuri patartų pirkėjui, kiek kokių žuvų

jis dar gali pirkti kiekvienam akvariumui. Kiekvienam akvariumui reikia pirkti maksimaliai galimą žuvų skaičių:

pirkimai pradedami nuo didžiausių žuvų ir vykdomi nuosekliai, žuvų ilgio mažėjimo tvarka. Duomenys. Faile U1.txt pirmoje eilutėje yra akvariumų skaičius n. Tolesnėse n eilučių yra pirkimų duomenys (4 sveikieji skaičiai), kiekvienam akvariumui:

akvariumo vandens talpa litrais, pradinis gupijų kiekis, pradinis barbusų kiekis,

pradinis nenoninių tetrų kiekis. Rezultatai. Kiekvieno akvariumo rezultatus spausdinkite atskiroje ekrano eilutėje:

papildomas gupijų kiekis, papildomas barbusų kiekis, papildomas nenoninių tetrų kiekis ir likusi nepanaudota

akvariumo talpa litrais. Skaičius atskirkite tarpo simboliu.

U2. Parkavimo aikštelė. Automobilių parkavimo aikštelėje yra n vietų, sunumeruotų nuo 1 iki n. Kiekvieną dieną

aikštelė atidaroma tuščia. Automobiliui atvykus į aikštelę, jos darbuotojas pastato automobilį į neužimtą vietą su

mažiausiu eilės numeriu. Jeigu laisvų vietų aikštelėje nėra, atvykęs automobilis laukia eilėje, kol kuris nors

aikštelėje stovintis automobilis išvyks, ir stovėjimo vieta atsilaisvins. Laukiančių automobilių eilė aptarnaujama ta

tvarka, kuria jie atvyko į aikštelę. Parkavimo kaina aikštelėje yra skaičiuojama automobilio masę kilogramais

padauginus iš tam tikros stovėjimo vietos įkainio už automobilio masės kilogramą. Parašykite programą, kuri

suskaičiuotų, kiek pinigų bus sumokėta aikštelės savininkui tą dieną. Duomenys. Faile U2.txt pirmoje eilutėje parašytas parkavimo aikštelės stovėjimo vietų skaičius n (1 n 100) ir atvykstančių automobilių skaičius m (1 m 2000). Kitoje eilutėje yra pateikti stovėjimo vietų įkainiai už

automobilio kilogramą (įkainis priklauso intervalui [1, 100]). Toliau duomenų faile automobilių numeravimo

tvarka yra nurodytos jų masės kilogramais (masė priklauso intervalui [1, 10000]). Automobiliai numeruojami nuo 1. Tolimesnėse 2*m yra pateikti automobilių atvykimo ir išvykimo duomenys: '+' (pliusas) prieš skaičių i reiškia, kad i-asis automobilis atvyko į aikštelę, o '–' (minusas) – i-asis automobilis išvyko. Kiekvieno

automobilio numeris atvykimo ir išvykimo duomenyse pasikartoja tiksliai du kartus: pirmiau atvyksta, paskui – išvyksta (nė vienas automobilis neišvyksta iš aikštelės prieš tai į ją neatvykęs). Rezultatai. Ekrane spausdinkite suskaičiuotą aikštelės savininko gaunamą pinigų sumą.

U2.txt Paaiškinimai Ekranas 2 5

5 2

100 500 1000 2000 300

+3

+1

+2

-1

+4

-3

+5

-2

-5

-4

Stovėjimo vietų skaičius ir atvykstančių automobilių skaičius. Stovėjimo vietų įkainiai. Automobilių svoriai. Trečias automobilis atvyko. Stoja į pirmą vietą. Pirmas automobilis atvyko. Stoja į antrą vietą. Antras automobilis atvyko. Laukia, nes nėra laisvų vietų. Pirmas automobilis išvyko. Antras automobilis stoja į antrą vietą. Ketvirtas automobilis atvyko. Laukia, nes nėra laisvų vietų. Trečias automobilis išvyko. Ketvirtas automobilis stoja į pirmą vietą. Penktas automobilis atvyko. Laukia, nes nėra laisvų vietų. Antras automobilis išvyko. Penktas automobilis stoja į antrą vietą. Penktas automobilis išvyko. Antra vieta laisva. Ketvirtas automobilis išvyko. Pirma vieta laisva.

16800

U3. Kompiuteriai. Kompiuterių ministerijoje yra daug kompiuterių, kurie sunumeruoti eilės tvarka, pradedant 1. Ne visi kompiuteriai tarpusavyje sujungti į vieną tinklą. Parašykite programą, kuri spausdintų kiekvieno potinklio

kompiuterių numerius didėjimo tvarka. Duomenys. Pirmoje duomenų failo U3.txt eilutėje yra užrašytas kompiuterių skaičius n (1 ≤ n ≤ 300) ir jungčių skaičius k (1 ≤ k ≤ 300). Failo tolesnėse k eilučių yra užrašytos jungtys po vieną eilutėje. Jungtis

nusakoma dviejų sujungtų kompiuterių numeriais. Rezultatai. Ekrane spausdinkite kiekvieno potinklio kompiuterių numerius didėjimo tvarka, skiriant tarpo simboliu. Vienam potinkliui skiriama viena eilutė.

U1.txt Ekranas 3

10 1 0 0

13 0 1 0

5 0 1 0

0 0 1 0

1 0 0 2

0 0 0 0

Kompiuterių jungtys U3.txt Ekranas

9 6

2 4

1 2

3 8

9 6

5 6

1 3

1 2 3 4 8

5 6 9

7

1

2 3

4

8

9

5

7

6

Page 58: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Suvalkijos programuotojų konkursas KTU Informatikos fakultetas Marijampolė, 2013 m. sausio 25 d. U1. „Negražūs“ skaičiai. Skaičių teorijoje teigiamo sveikojo skaičiaus pirminis daugiklis yra pirminis skaičius, kuris dalija tą sveikąjį skaičių be liekanos. Šių skaičių ieškojimo procesas vadinamas sveikųjų skaičių

faktorizavimu arba pirmine faktorizacija. „Negražūs“ skaičiai yra tokie, kurių pirminiai daugikliai yra tik 2, 3 arba 5. Seka – 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15 - nurodo pirmuosius 11 „negražių“ skaičių (pagal susitarimą 1 taip pat

įtraukiamas). Parašykite programą, kuri surastų ir spausdintų n-ąjį „negražų“ skaičių.

Duomenys. Faile U1.txt pirmojoje eilutėje yra ieškomų „negražių“ skaičių kiekis k (1 k < 50). Antrojoje eilutėje yra užrašyti šių „negražių“ skaičių numeriai n (1 n < 1500).

Rezultatai. Ekrane spausdinkite kiekvieną n reikšmę ir n-ąjį „negražų“ skaičių taip, kaip parodyta pavyzdyje.

U1.txt Ekranas

3

9 5 11

9:10

5:5

11:15

U2. Dosnūs draugai. Draugų grupėje kiekvienas žmogus draugų gimtadienių dovanoms skiria tam tikrą pinigų

sumą, kurią padalina iš draugų skaičiaus. Tačiau visada atsiranda tokių draugų, kurie kitų gimtadienių dovanoms išleidžia daugiau pinigų nei patys gauna dovanų per savo gimtadienį. Parašykite programą, kuri suskaičiuotų, kiek

kuris iš draugų „išleidžia-gauna“ pinigų pirkdamas-gaudamas dovanas.

Duomenys. Faile U2.txt pateikti duomenys apie vieną draugų grupę: pirmojoje eilutėje yra grupės narių skaičius n (2 n 10); antrojoje eilutėje surašyti grupės draugų vardai (vardas – vienas žodis, sudarytas iš ne daugiau kaip 10

lotyniškų raidžių, vardo užrašymui fiksuotai skiriama 11 pozicijų); tolimesnėse n eilučių pateikti kiekvieno grupės draugo duomenys:

o vardas (vardo užrašymui galioja anksčiau nurodytos taisyklės); o dovanoms išleista pinigų suma s (0 s 2000); o draugų, kuriems buvo pirktos dovanos, skaičius h (1 h n-1); o draugų, kuriems buvo pirktos dovanos, vardai (vardų užrašymui galioja anksčiau nurodytos

taisyklės).

Rezultatai. Ekrane spausdinkite grupės draugų sąrašą, nurodydami draugo vardą ir jo „išleistą-gautą“ pinigų sumą

kaip parodyta pavyzdyje: teigiamas skaičius reiškia „gautą“ pinigų sumą, neigiamas – „išleistą“. Skaičiuojant

kiekvieno draugo „išleistą-gautą“ pinigų sumą, naudojami sveikieji skaičiai. Draugų sąrašas turi būti atspausdintas

tokia tvarka, kokia jis buvo pateiktas duomenų faile.

U2.txt Ekranas

3

Lina Stepas Dovydas

Lina 30 1 Stepas

Stepas 55 2 Lina Dovydas

Dovydas 0 2 Stepas Lina

Lina -3

Stepas -25

Dovydas 27

U3. Kurmiai. Pavasarį sode apsigyveno kurmiai. Kiekvienas kurmis išsirausė sau atskirą urvą. Suskaičiuokite, kiek

kurmių apsigyveno sode ir koks yra kiekvieno kurmio išrausto urvo dydis.

Duomenys. Faile U3.txt yra pateikta sodo plokštuminė kurmių urvų schema – atvaizduota dvimačiu simbolių

masyvu. Pirmoje failo eilutėje yra užrašytas schemos dydis: eilučių skaičius n (5 n 500) ir stulpelių skaičius

m (5 m 500). Tolesnėse n eilučių yra užrašyta po m simbolių: 'z' (žemė) arba 'u' (urvas). Vienas simbolis atitinka 5 cm2 plotą. Du urvo simboliai ('u') priklauso tam pačiam urvui, jeigu jie yra greta toje pačioje eilutėje arba greta tame pačiame stulpelyje.

Rezultatai. Ekrane atskirose eilutėse spausdinkite sode apsigyvenusių kurmių skaičių ir kurmių urvų dydžius (cm2)

surikiuotus mažėjimo tvarka. U3.txt Ekranas Paaiškinimai

6 15

zzzzzzzzzuzuzzz

uuzuuzuuzuuuzzz

zuzuzzuzuuzuzuz

zuzuzzuzzuzuuuz

zuuuuuuuzuzzzzz

zzzzzuuuzzzzzzz

2

110

70

2 kurmiai 22 x 5 cm2 = 110 14 x 5 cm2= 70

Page 59: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Žemaitijos programuotojų konkursas KTU Informatikos fakultetas Kuršėnai, 2013 m. vasario 22 d.

U1. Plotas ir perimetras. Plokštumoje yra n (1 < n < 100) stačiakampių, kurių kraštinės lygiagrečios

koordinačių ašims. Suraskite tarp jų, kurio stačiakampio ploto ir perimetro santykis yra didžiausias.

Duomenys. Tekstinio failo U1.txt pirmoje eilutėje nurodyta n. Tolimesnėse n eilučių, kurios aprašo po vieną

stačiakampį, yra po 4 sveikuosius skaičius a, b, c, d (-100 < a, b, c, d < 100, a < c, b > d), kur (a, b) žymi stačiakampio viršutinį kairįjį kampą, o (c, d) stačiakampio apatinį dešinįjį kampą.

Rezultatai. Ekrane spausdinkite surasto stačiakampio eilės numerį duomenyse, jo plotą, perimetrą ir santykį tarp

ploto bei perimetro.

U1.txt Ekranas

3

-13 13 13 -13

9 10 13 9

-11 4 2 -5

1 676 104 6.5

U2. Domino. Domino kauliukas yra stačiakampis, sudarytas iš dviejų dalių, kurios žymimos skaičiais nuo

0 iki 6. Pilnas domino rinkinys turi 28 skirtingus kauliukus: (0, 0), (0, 1), . . . , (6, 6). Kauliukas, kuris turi tą patį skaičių abiejose dalyse, vadinamas dvigubu. Kauliuko vertė – tai jo abiejų dalių skaičių suma.

Žaidimo metu kauliukai nuosekliai jungiami į grandinę. Žaidėjas prijungia kauliuką prie bet kurio

grandinės galo, jei kauliuko kuris nors skaičius sutampa su grandinės galo skaičiumi. Pavyzdžiui, jei

grandinę sudaro kauliukai (2,1), (1, 1), (1, 3), (3, 6), tai jūs galite prijungti kauliuką (2, 6) prie grandinės

pradžios arba prie grandinės pabaigos. Atskiras atvejis, jei jūs turite 2 dvigubus, kurie atitinka abu

grandinės galus, tuomet juos abu galima iš karto prijungti. Žaidėjas, kuris neturi tinkamo ėjimo, jį

praleidžia. Laimi tas, kuris pirmiausia pabaigia savo kauliukus, o kiti tuo metu skaičiuoja savo baudos

taškus. Baudai taškai lygūs likusių žaidėjo kauliukų skaičių sumai. Jūs dalyvaujate žaidime. Jūsų paskutinis ėjimas. Ar galite laimėti žaidimą? Jei negalite, tai bent

minimizuokite baudos taškų skaičių.

Duomenys. Tekstinio failo U2.txt pirmoje eilutėje nurodyta k ir r. k žymi jūsų likusių kauliukų skaičių. r žymi

žaidimo grandinės kauliukų skaičių. Tolimesnės k eilučių yra po 2 sveikuosius skaičius nuo 0 iki 6, kurie žymi

kauliuką. Paskutinė duomenų eilutė turi 2*r sveikųjų skaičių, žyminčių domino grandinę.

Rezultatai. Jei jūs laimėjote žaidimą, ekrano pirmojoje eilutėje spausdinkite 0 ir suformuotą grandinę tolimesnėje

eilutėje. Jei nelaimėjote žaidimo, spausdinkite baudos taškų sumą, o tolimesnėse eilutėse jūsų likusius kauliukus ir

galiausiai – suformuotą grandinę.

U2.txt Ekranas

1 3

1 4

1 3 3 2 2 4

0

4 1 1 3 3 2 2 4

U3. DEL komanda. Reikia nustatyti, ar galima viena DEL komanda pašalinti visus norimus panaikinti

failus. DEL komandos formatas: DEL pakaitos simboliai

Pakaitos simbolius gali sudaryti failo vardas, turintis nuo 1 iki 8 simbolių, arba vardas ir vardo

plėtinys iki 3 simbolių. Taško ženklas „.“ skiria vardą nuo plėtinio. Pakaitos simboliuose galima naudoti

ir specialius simbolius „?“ ir „*“. Simbolis „?“ pakeičia vieną failo vardo arba jo plėtinio simbolį,

išskyrus tašką. Simbolis „*“ pakeičia bet kokią simbolių seką, neturinčią taško, netgi ir tuščią seką. „*“

gali pasirodyti tik paskutinėje vardo ar plėtinio pozicijoje. Failų vardus ir plėtinius sudaro tik lotyniškos

raidės ir skaitmenys.

Duomenys. Tekstinio failo U3.txt pirmoje eilutėje nurodyta k (≤150). k žymi toliau esančių failo vardų

kiekį. Kiekvienas failo vardas yra atskiroje eilutėje. Prieš failo vardą yra simbolis „-“ arba simbolis „+“. Simbolis

„-“ rodo, kad šį failą reikia šalinti, o simbolis „+“ rodo, kad šio failo šalinti negalima.

Rezultatai. Išveskite komandą DEL su suformuotais pakaitos simboliais, jei yra tokia komanda, kuri leidžia

pašalinti visus naikinamus failus iš karto. Priešingu atveju išveskite pranešimą „Negalima“.

U3.txt Ekranas

3

-BP.EXE

+TURBO.EXE

-BPC.EXE

DEL ?P*.EXE

Page 60: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dr. J. P. Kazicko programavimo konkursas Informatikos fakultetas, 2013 m. kovo 2 d. KTU U1. Pirminiai skaičiai. Raskite visus pirminius skaičius intervale [a, b], kurie tuo pačiu metu yra ir Fibonači skaičiai, o jų užrašas atvirkščia seka yra taip pat pirminis skaičius. Fibonači skaičių seka vadiname seką, kurioje kiekvienas narys yra ankstesnių dviejų narių suma: 0, 1, 1, 2, 3, 5, 8, 13, 21 ir t.t. Duomenys. Faile U1.txt yra a ir b (2 a, b 5000) reikšmės. Rezultatai. Faile U1rez.txt spausdinkite surastus skaičius. Atskiromis eilutėmis, skiriant tarpu, spausdinkite kiekvieną surastą skaičių ir jo užrašą atvirkščiai, pavyzdžiui: 13 31.

U1.txt U1rez.txt

4 15 5 5

13 31

U2. Vardai. Naujakurių rajone privačiuose namuose gyvena šeimos: mama, tėtis ir vaikai (jeigu jų yra). Yra žinomi kiekviename name gyvenančios šeimos narių vardai. Vardai besibaigiantys raide ‘s‘ – vyrų (berniukų), kitokia raide – moterų (mergaičių). Reikia rasti:

kiek kiekvienoje gatvėje yra šeimų, kuriose vaikų vardai yra paveldimi (dukters vardas sutampa su mamos ir/arba sūnaus vardas sutampa su tėčio);

kelių šeimų pirmagimiai buvo berniukai ir kelių – mergaitės; mergaičių ir berniukų vardus, kurie pasikartoja visose gatvėse.

Duomenys. Faile U2.txt yra surašyti Naujakurių rajono n gatvių šeimų gyventojų vardai. Pirmoje failo eilutėje

užrašytas skaičius n (1 n 20). Antroje failo eilutėje užrašytas gatvės pavadinimas (15 pozicijų) ir joje

esančių namų skaičius m (1 m 50). Tolesnėse m eilučių pateiktas kiekvieno namo šeimos narių skaičius k (2 k 10) ir šeimos narių vardai (kiekvienam vardui skiriama 10 pozicijų): mamos vardas, tėčio vardas ir vaikų vardai jų gimimo tvarka. Tokia pat tvarka pateikiami visų n gatvių duomenys. Rezultatai. Ekrane pagal pavyzdyje pateiktą šabloną spausdinkite:

kiek kiekvienoje gatvėje yra šeimų, kuriose vaikų vardai yra paveldimi; kelių šeimų pirmagimiai buvo berniukai ir kelių – mergaitės; mergaičių ir berniukų vardus, kurie pasikartoja visose gatvėse (jeigu tokio/-ių vardo/-ų nėra spausdinkite

žodį ‘NĖRA‘). U2.txt Ekranas

2

Saulės 4

5 Rasa Rimas Jaunius Simona Kąstytis

3 Rita Antanas Rita

2 Jolanta Juozas

4 Vitalija Giedrius Rytis Ligita

Mėnulio 3

3 Vilma Vilius Kąstytis

4 Karolina Martynas Darijus Deimantas

4 Viktorija Viktoras Kotryna Smiltė

Saulės 1

Mėnulio 0

Berniukai 4

Mergaitės 2

NĖRA

Kąstytis

U3. Žaidimas. Lentoje, kuri sudalinta į 4 x 4 langelių, yra išdėstyti 8 balti ir 8 juodi akmenėliai, t.y. po vieną kiekviename langelyje. Toks išdėstymas yra vadinamas žaidimo pozicija. Du akmenėliai yra kaimyniniai, jei langeliai, ant kurių jie padėti, liečiasi kraštinėmis horizontaliai arba vertikaliai: kiekvienas akmenėlis gali turėti daugiausia 4 kaimyninius langelius. Ėjimu žaidime laikomas dviejų kaimyninių akmenėlių sukeitimas vietomis. Eilutės lentoje numeruojamos nuo 1 iki 4 nuo viršaus į apačią. Stulpeliai numeruojami nuo 1 iki 4 iš kairės į dešinę. Parašykite programą, kuri rastų trumpiausią ėjimų seką, pervedančią iš duotos pradinės žaidimo pozicijos į nurodytą galutinę žaidimo poziciją. Jei egzistuoja keletas galimų trumpiausių sekų, reikia spausdinti bet kurią iš jų. Duomenys. Failo U3.txt pirmosiose keturiose eilutėse yra pradinės žaidimo pozicijos duomenys. Eilutės aprašo šachmatų lentą nuo viršaus į apačią. Kiekvienoje eilutėje yra 4 simboliai, kurie nurodo akmenėlių spalvas iš kairės į dešinę: '0' - balta, '1' - juoda. Simboliai neskiriami tarpais. Penktoji duomenų failo eilutė yra tuščia. Likusiose keturiose eilutėse tokiu pat būdu yra pateikti galutinės žaidimo pozicijos duomenys. Rezultatai. Ekrane pirmojoje eilutėje reikia spausdinti ėjimų skaičių. Toliau kiekvienam ėjimui spausdinti skiriama viena eilutė, sudaryta iš keturių teigiamų skaičių, atskirtų tarpais: E1 S1 E2 S2. Tai kaimyninių akmenėlių, kuriuos ėjimo metu reikia sukeisti koordinatės: E1 (E2) - eilutės numeris, S1 (S2) - stulpelio numeris.

U3.txt Ekranas

1010

0101

1010

0101

0110

0101

1010

0110

2

4 3 4 4

1 1 1 2

Page 61: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Aukštaitijos programuotojų konkursas KTU Informatikos fakultetas Pasvalys, 2014 m. vasario 28 d.

U1. Skaičių poaibis. Duotas sveikųjų skaičių rinkinys, sudarytas iš N narių (2≤N≤100). Ar galima iš jo išrinkti

bent vieną tokį iš eilės einančių narių poaibį, kad jo narių suma būtų lygi nurodytam skaičiui? Duomenys. Tekstinio failo U1.txt pirmoje eilutėje yra skaičius, kuris nurodo, kiek yra rinkinių. Toliau kiekvienam rinkiniui skirta po dvi eilutes: pirmojoje nurodyta siekiama suma ir rinkinio narių kiekis, antrojoje –paties rinkinio nariai. Rezultatai. Ekrane spausdinkite atsakymą kiekvienam rinkiniui, nurodydami rinkinio numerį, žodį „galima“ ar

„negalima“, jei „galima“, išvardinkite tuos narius. U1.txt Ekranas

3

11 4

5 2 4 1

9 4

5 2 4 1

8 5

9 2 4 1 3

1 – galima

5 2 4

2 – negalima

3 – galima

4 1 3

U2. Šachmatai. Viename šachmatų komplekte yra 32 figūros: 16 baltų ir 16 juodų. Vieną baltų figūrų komplektą

sudaro: karalius, valdovė, 2 žirgai, 2 rikiai, 2 bokštai ir 8 pėstininkai. Tokios pat figūros yra ir juodajame

komplekte. Figūras žymėsime dviem simboliais: spalvos simboliu (b ar j) ir figūros simboliu – tai pirmąja figūros

pavadinimo raide. Žirgą žymėsime z raide. Pvz.: bz, jz, bv, jk. Turime 2 šachmatų komplektus, bet abu nepilni. Ar

galite sudaryti vieną pilną komplektą. Galimi atsakymai: „Taip“ arba „Ne“. Jei atsakymas „Taip“, tuomet reikia

išvardinti figūras, kurios bus perkeltos į pirmąjį žaidimo komplektą, kad jis būtų pilnas.

Duomenys. Tekstinio failo U2.txt pirmoje eilutėje nurodyti k1ir k2, atitinkamai žymintys pirmojo ir antrojo

šachmatų komplektų kiekius. Tolimesnėse k1 eilučių yra išvardintos pirmojo komplekto figūros, toliau esančiose

k2 eilučių išvardintos antrojo komplekto figūros. Informacija apie figūrą užima pirmąsias dvi eilutės pozicijas. Rezultatai. Ekrano pirmojoje eilutėje spausdinkite galimą atsakymą. Tolimesnėse eilutėse, jei to reikia, išvardinkite papildomas į pirmąjį komplektą figūras. U2.txt Ekranas

3 5

bk

bv

bb

jr

jp

jp

jp

bz

Ne

U3. Kurjerio kelias. Karalystėje yra N (2≤N≤20) miestų, sunumeruotų nuo 1 iki N. Sostinės numeris yra 1.

Kiekvieną miestą supa siena su 4 vartais. Vartai taip pat sunumeruoti. Miesto i vartai numeruojami 4i-3, 4i-2, 4i-1, 4i. Nuo kiekvienų vartų yra tik vienas kelias prie kito miesto kurių nors vartų (nuo vieno miesto prie kito miesto gali būti keletas kelių). Visais keliais galima keliauti abiems kryptimis. Keliai nesusikerta, nes naudojami tiltai ir

tuneliai. Karališkasis kurjeris turi prie kiekvienų vartų ant išorinės miesto sienos pakabinti karaliaus įsakymą. Kurjeris gali laisvai judėti nuo vienų vartų prie kitų tame pačiame mieste, tačiau miestų išorėje gali keliauti tik keliais. Kurjeris

pradeda savo kelią sostinėje ir turi grįžti į sostinę. Ar įmanoma, kad kurjeris praeitų kiekvienus vartus tik kartą?

Išėjimas iš miesto įsakymo pakabinimui per vartus ir grįžimas iš karto atgal laikomas vienu vartų praėjimu.

Duomenys. Tekstinio failo U3.txt pirmoje eilutėje nurodyta, kiek yra karalysčių. Toliau kiekvienai karalystei

skirta po 2 eilutes: pirmojoje iš jų nurodyta N, antrojoje – N skaičių porų pristato karalystės kelius. Kelias nurodomas vartų, kuriuos jungia, numeriais.

Rezultatai. Rezultatus išveskite į failą U3rez.txt. Kiekvienai karalystei rezultatuose skirkite po vieną arba dvi

eilutes. Pirmojoje karalystės eilutėje turi būti žodis „Taip“ arba „Ne“. Jei „Taip“, tai antroje eilutėje turi būti

išvardintas kelias, kurį įveikė kurjeris, nurodant vartų numeriais, atskirtais vienu tarpu. Jei galimų kelių yra keletas,

reikia nurodyti tik vieną.

U3.txt Failas

2

4

1 9 2 10 3 13 4 8 5 11 6 14 7 16 15 12

4

1 7 2 6 3 5 4 8 9 15 10 14 11 13 12 16

Taip

1 3 13 14 16 15 12 9 10 11 5 6 7 8 4 2

Ne

Page 62: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dzūkijos programuotojų konkursas Suvalkijos programuotojų konkursas KTU Informatikos fakultetas Druskininkai, 2014 m. vasario 21 d.

Vilkaviškis, 2014 m. vasario 21 d.

U1. Futbolas. Futbolo rungtynių metu kas minutę buvo fiksuojama žaidėjų buvimo vieta. Fiksuojama buvo Dekarto koordinačių sistemoje, o aikštės centras atitinka Dekarto koordinačių sistemos centrą. Treneriui įdomu,

kuris žaidėjas daugiausiai nubėgo ir kurio žaidėjo vidutinis greitis didžiausias. Duomenys. Tekstinį failą U1.txt sudaro: pirmoje eilutėje žaidėjų kiekis n (2 ≤ n ≤ 20), kitose eilutėse - žaidėjo numeris, užfiksuotų koordinačių kiekis m (2 ≤ m ≤ 91) ir m sveikųjų skaičių porų koordinačių (x1 y1 x2

y2 ... xm ym). Rezultatai. Ekrane spausdinkite greičiausio ir daugiausiai nubėgusio žaidėjų numerius ir jų rezultatus dviejų

skaitmenų po kablelio tikslumu (žiūr. pavyzdį). U1.txt Ekranas

4 22 4 0 3 5 0 -5 0 -7 5 45 7 0 0 5 5 -5 5 0 0 -5 -5 5 -5 0 0 21 4 20 0 10 -8 -5 0 -7 0 33 5 0 1 5 5 0 5 -5 5 0 0

21 10.60 m/min

45 48.28 m

U2. Didelių skaičių atimtis. Parašykite programą, kuri apskaičiuotų dviejų sveikųjų teigiamų skaičių a ir b (a ≥ b), kurių skaitmenų skaičius m (0 < m < 50), skirtumą. Duomenys. Faile U2.txt pirmoje eilutėje yra skaičių porų kiekis n. Toliau eilutėse surašyti sveikieji skaičiai a ir b, kiekvienoje eilutėje duota po du tarpu atskirtus skaičius. Rezultatai. Ekrane atskirose eilutėse spausdinkite skaičių skirtumus.

U2.txt Ekranas

2

987654321098765432109 2109

123456789012345678901 9

987654321098765430000

123456789012345678892

U3. Kryžiažodis. Lentelėje (matricoje), sudarytoje iš n eilučių ir m stulpelių (2 ≤ n, m ≤ 100), yra surašytos

lotyniškos raidės. Reikia rasti lentelėje duotus žodžius. Žodžių skaičius k (1 ≤ k < 100). Žodžiams eilės tvarka,

pradedant vienetu, suteikiami numeriai. Yra duotos žodžių pradžios koordinatės lentelėje: eilutės nr. ir stulpelio nr.

Dvi gretimos žodžio raidės yra dviejuose gretimuose stulpeliuose arba dviejose gretimose eilutėse. Nei vienas žodis

negali būti kito žodžio dalimi. Surastų žodžių eilės numerius reikia surašyti į kitą tokio pačio dydžio skaičių lentelę:

visuose kiekvieno žodžio raidėms atitinkamuose lentelės langeliuose įrašant žodžio eilės numerį. Į likusius lentelės

langelius įrašomi nuliai. Pabaigus visų žodžių paiešką, randamos skaičių lentelės stulpeliuose įrašytų skaičių

sumos.

L a j i n i k s a 1. Kabinetas 2 2 2 4 4 4 4 4 4 5 5

a K a m i n u m r 2. Laivelis 1 1 2 1 1 3 3 3 4 5 5

i s b i s a C e g 3. Giminaitis 4 4 2 2 1 3 1 3 4 5 5

v i i G a i s i i 4. Cukinija 3 7 2 2 1 3 1 3 3 5 5

e l n e t t i K s 5. Kiemsargis 5 8 2 2 1 1 1 3 3 5 5

10 11 8 14 10 16 18 25 25

Duomenys. Tekstinio failo U3.txt pirmoje eilutėje nurodytas lentelės eilučių skaičius n ir stulpelių skaičius m. Tolimesnėse n eilučių surašytos raidės. Kiekvienoje eilutėje po m raidžių. Tolesnėje eilutėje yra užrašytas ieškomų

žodžių skaičius k. Toliau kitose eilutėse yra užrašyti ieškomi žodžiai (20 pozicijų) ir jų koordinatės: eilutės numeris ir stulpelio numeris. Rezultatai. Ekrane spausdinkite suformuotą skaičių lentelę ir skaičių lentelės kiekvieno stulpelio skaičių sumą.

U3.txt Ekranas

5 9

Lajiniksa

aKaminumr

isbisaCeg

viiGaisii

elnettiKs

5

Kabinetas 2 2

Laivelis 1 1

Giminaitis 4 4

Cukinija 3 7

Kiemsargis 5 8

2 4 4 4 4 4 4 5 5

2 1 1 3 3 3 4 5 5

2 2 1 3 1 3 4 5 5

2 2 1 3 1 3 3 5 5

2 2 1 1 1 3 3 5 5

10 11 8 14 10 16 18 25 25

Page 63: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dr. J. P. Kazicko programavimo konkursas 2014 m. kovo 15 d.

U1. Dėžės. Kambaryje sukrautos tuščios dėžės. Žinomi dėžių išoriniai matmenys. Visų dėžių visų sienelių storis

vienodas. Iš eilės grupuojant dėžes po tris (1, 2, 3; 4, 5, 6; ...) pabandykite sudėti jas viena į kitą (rusiškos

„matrioškos“ principu) taip, kad dėžės pilnai užsidarytų. Dėžes dedant vieną į kitą galima keisti vietomis ir vartyti. Raskite, kiek dėžių trejetų buvo sudaryta, visų šių trejetų didžiausių dėžių užimamą tūrį ir kiek trejetų liko

nesudėtų. Duomenys. Faile U1.txt pirmoje eilutėje yra dėžių kiekis n (3 ≤ n ≤ 99, kartotinis trims) ir dėžių sienelių

storis s (1 ≤ s ≤ 10, sveikasis skaičius). Toliau eilutėse surašyti išoriniai dėžių matmenys sveikieji skaičiai a, b ir c (5 ≤ a, b, c ≤ 100). Rezultatai. Ekrane spausdinkite sudarytų dėžių trejetų skaičių, visų šių trejetų užimamą tūrį ir kiek trejetų liko

nesudėtų. U1.txt Paaiškinimai Ekranas

9 2

14 10 12

30 20 20

7 8 6

5 5 6

7 5 5

7 5 7

25 15 25

20 20 10

20 30 30

Dėžių kiekis ir sienelių storis

1-o trejeto dėžių matmenys

2-o trejeto dėžių matmenys

3-o trejeto dėžių matmenys

2 30000 1

U2. Sąskambiai. Turime x skirtingas natas grojančių varpelių, sunumeruotų didėjančia tvarka, pradedant nuo

1 (1, 2, 3, ...). Šie varpeliai taip pat sužymėti naudojant pirminius skaičius, pradedant nuo 2 (2, 3, 5, ...). Varpelių

sąskambiai aprašomi naudojant vienu metu grojančius varpelius atitinkančių pirminių skaičių sandaugas.

Pavyzdžiui, sąskambis 6 = 2 * 3 (groja varpeliai Nr. 1 ir Nr. 2), sąskambis 5 = 5 (groja varpelis Nr. 3) ir t. t. Parašykite programą, kuri iškoduotų sąskambius į vienu metu grojančių varpelių numerius bet kokiam varpelių

skaičiui. Duomenys. Failo U2.txt pirmoje eilutėje yra du skaičiai x ir y, kur x – varpelių skaičius (1 ≤ x ≤ 1000), y – sąskambių skaičius (1 ≤ y ≤ 100). Likusiose y eilučių yra po vieną skaičių (≤30000), reiškiantį sąskambį. Rezultatai. Ekrane spausdinkite sąskambius atitinkančių varpelių numerius, vienam sąskambiui į vieną eilutę.

Numerius išrikiuokite didėjimo tvarka ir atskirkite tarpais. U2.txt Ekranas

3 3

6

30

15

1 2

1 2 3

2 3

U3. Vanduo. Inžinierius pagamino horizontalių ir vertikalių tarpusavyje sujungtų vamzdžių sistemą. Į vieną iš vertikalių vamzdžių pilamas vanduo. Kiekvieno šakojimo vietoje trečdalis (sveikoji dalybos iš 3 dalis) vandens pasuka horizontaliu vamzdžiu, likusi vandens masė teka vertikaliai žemyn. Horizontaliu vamzdžiu vanduo gali tekėti abiem kryptimis, tačiau vamzdžiai sujungti taip, kad skirtingų krypčių srautai niekada netekės tuo pačiu metu. Aukštyn vanduo neteka. Parašykite programą, kuri suskaičiuotų, kiek vandens ištekės per kiekvieną vertikalų vamzdį. Duomenys. Failo U3.txt pirmoje eilutėje yra vertikalių vamzdžių skaičius n (2 ≤ n ≤20), horizontalių vamzdžių skaičius m (1 ≤ m ≤20), vamzdžio, į kurį pilamas vanduo, numeris k (1 ≤ k ≤ n) ir pilamo vandens kiekis v litrais (1 ≤ v ≤100, sveikasis skaičius). Kitose m eilučių yra duomenys apie horizontalius vamzdžius – po tris sveikuosius skaičius i, j, h, kur i, j – vertikalių vamzdžių, kuriuos jungia horizontalus vamzdis, numeriai (1 ≤ i, j ≤ n), h – atstumas (cm) nuo apačios (1 ≤ h ≤ 1000). Rezultatai. Ekrane spausdinkite vamzdžių numerius ir ištekančio vandens kiekius taip, kaip parodyta pavyzdyje.

U3.txt Ekranas

4 5 2 6

1 2 70

2 3 30

3 4 80

3 4 50

3 4 10

1: 2

2: 3

3: 1

4: 0

Page 64: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Aukštaitijos programuotojų konkursas KTU Informatikos fakultetas Pasvalys, 2015 m. vasario 27 d. Žemaitijos programuotojų konkursas Kuršėnai, 2015 m. vasario 27 d.

U1. Tikslumas. Moksleivis Tadas derina sugedusį skaičiuotuvą. Pagal žinomą formulę skaičiuoja funkcijos

reikšmes ir tikrina gautus rezultatus su turimomis tiksliomis vertėmis. Tačiau reikšmių tiek daug, kad jam prireiks

visos savaitės jas patikrinti. Padėkite Tadui nustatyti, ar skaičiuotuvas pateikė teisingas reikšmes, o jeigu ne – kokiu tikslumu po kablelio apskaičiavo rezultatą.

Duomenys. Tekstinio failo ‘U1.txt’ pirmoje eilutėje nurodytas pateikiamų skaičių porų kiekis, o kiekvienoje

sekančioje eilutėje nurodyti du realieji skaičiai. Pirmasis skaičius yra tikroji funkcijos reikšmė, antrasis – skaičiuotuvu paskaičiuota reikšmė. Kiekvieno skaičiaus skaitmenų skaičius po kablelio N < 50, antrasis skaičius

faile visada prasideda nuo 53 pozicijos.

Rezultatai. Rezultatus išveskite į ekraną. Kiekvienoje eilutėje nurodykite ‚T‘, jeigu skaičiai sutampa arba ‚N‘ – jeigu nesutampa bei nesutapimo atveju pateikite pasiektą tikslumą skaitmenimis po kablelio.

U1.txt Ekranas

5

4.498 4.4999

45.213001 45.213002

6.28 6.280

0.111111111111199999999999 0.1111110

89 89

Palyginimo rezultatas:

N 2

N 5

T

N 6

T

U2. Paprasti uždaviniai. Trijų ekspertų komisija programavimo konkursui nori parinkti keletą paprastų

uždavinių, tačiau jie nesutaria, kurie už pasiūlytų uždavinių yra paprasti. Kad pasiektų sutarimą, ekspertai

nusprendžia naudoti tokią vertinimo sistemą: Kiekvienas ekspertas kiekvieną iš siūlomų uždavinių įvertina

sudėtingumo balu 0 ≤ b ≤ 100 (keletas uždavinių gali būti vertinami vienodu balu). Galiausiai palyginami visų

ekspertų vertinimai – paprastu laikomas toks uždavinys, kurį mažiausiu balu įvertino bent 2 ekspertai iš 3, ir nei vienas neįvertino didžiausiu balu. Pagal ekspertų vertinimus nustatykite, kurie uždaviniai yra paprasti.

Duomenys. Tekstinio failo ‘U2.txt’ pirmoje eilutėje nurodytas siūlomų uždavinių skaičius N. Tolesnėse trijose

eilutėse surašyti kiekvienam uždaviniui ekspertų skirti sudėtingumo balai – vienam ekspertui viena eilutė.

Rezultatai. Rezultatus išveskite į ekraną, kuriame išvardinkite paprastų uždavinių numerius (uždaviniai

numeruojami nuo 1).

U2.txt Ekranas Atsakymo komentaras 5

1 2 1 7 1

5 9 6 8 13

9 10 8 15 8

Paprasti uždaviniai:

1 3

1 - ąjį uždavinį mažiausiais balais įvertino pirmasis (1) ir

antrasis (5) ekspertai. 3 - ąjį uždavinį mažiausiais balais įvertino pirmasis (1) ir

trečiasis (8) ekspertai. 5 - asis uždavinys nėra paprastas, nes jį didžiausiu balu (13)

įvertino antrasis ekspertas.

U3. Parlamentas. Naujosios Demokratijos saloje kiekvienas gyventojas įkūrė po partiją, kurios vadovu pats ir

tapo. Kiekvienas salos gyventojas gali būti bet kurios kitos partijos nariu. Visų nustebimui net ir pačioje

mažiausioje partijoje buvo ne mažiau 2 žmonių. Tačiau finansiniai sunkumai neleido įgyvendinti Konstitucijos

projekto, pagal kurį į parlamentą turėjo būti išrinkti visų partijų vadovai. Pasitarę, salos gyventojai nusprendė, kad

bus gerai, jei parlamente bus nors po vieną kiekvienos partijos atstovą. Nustatyti minimalaus dydžio parlamentą,

kuriame bus atstovaujamos visos partijos.

Duomenys. Tekstinio failo ‘U3.txt’ pirmoje eilutėje nurodytas partijų skaičius N (2≤N≤30), tolimesnėse eilutėse – pirmasis skaičius nurodo partijos narių kiekį, toliau skaičiais nurodomi partijos nariai (partija ir jos vadovas turi tą

patį numerį).

Rezultatai. Į ekraną išveskite pradinius duomenis, kur parlamentarų numeriai būtų surikiuoti didėjimo tvarka.

Suskaičiuotus rezultatus išveskite taip pat į ekraną, kur išvardinsite parlamento narius numerių didėjimo tvarka.

U3.txt Ekranas

4

4 1 2 3 4

2 2 3

4 3 1 4 2

2 4 2

Pradiniai surikiuoti duomenys:

1 2 3 4

2 3

1 2 3 4

2 4

Parlamentą sudaro:

2

Page 65: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dzūkijos programuotojų konkursas KTU Informatikos fakultetas Druskininkai, 2015 m. vasario 20 d. Kauno programuotojų konkursas Kaunas, 2015 m. vasario 20 d. U1. Varlė gaudo žiogą. Ant begalinio dydžio horizontalios plokštumos, pradinėse padėtyse, tupi varlė ir žiogas. Varlė šoka

ant žiogo, žiogas lygiai tuo pat metu šoka bandydamas gelbėtis. Jeigu abiems baigus šuolį, žiogas atsiduria ne didesniu atstumu

nei Vp nuo varlės, varlė žiogą pagauna. Jeigu ne, varlė vėl šoka ant žiogo, o žiogas lygiai tuo pat metu šoka bandydamas gelbėtis, ir t.t. Jei varlė pagauna žiogą, varlė grąžinama į savo pradinę padėtį, senojo žiogo pradinėje padėtyje padedamas

naujas žiogas ir gaudynės kartojasi. Parašykite programą, kuri modeliuotų čia aprašytas gaudynes ir suskaičiuotų, kiek žiogų

pagauna varlė. Duomenys. Tekstinio failo 'U1.txt' pirmoje eilutėje

nurodytos varlės pradinės koordinatės X ir Y ašyse,

maksimalus varlės šuolio ilgis Vs ir atstumas, kuriuo varlė

pagauna žiogą Vp. Antroje eilutėje nurodytos žiogo

pradinės koordinatės X ir Y ašyse. Trečioje eilutėje

nurodytas šuolių skaičius N. Kiekviena likusi eilutė

aprašo vieno šuolio metu žiogo nušoktą atstumą X ir Y ašyse. Teigiamas atstumas reiškia šuolį ašies kryptimi,

neigiamas atstumas reiškia šuolį prieš ašies kryptį. Šuoliai pateikiami iš eilės, modeliavimas nutrūksta įvertinus

paskutinio šuolio rezultatą. Visi duomenų skaičiai

intervale [-1000;1000]. Skaičiai toje pačioje eilutėje

atskirti tarpu. Rezultatai. Ekrane kiekvienam žiogo šuoliui spausdinkite po vieną eilutę, kurioje įrašykite 1, jei varlė pasibaigus tam šuoliui

žiogą pagavo ir 0 jei nepagavo. Papildomoje eilutėje spausdinkite, kiek žiogų varlė pagavo iš viso.

U2. Polialfabetiniai kodai. Atsiradus Cezario kodui, tik nedaugelis žmonių mokėjo skaityti ir rašyti. Kodai taip pat buvo

naujovė ir Cezario šifru žmonės naudojosi ilgai ir sėkmingai. Kai pavyko šį kodą iššifruoti, paslaptis buvo atskleista ir kodas tapo nepatikimas. XVI a. diplomatas Bleisas de Vigeneras (Blaise de Vigenère) sukūrė polialfabetinį kodą. Jo idėja panaši į

Cezario kodo, tačiau nežinant raktinio žodžio, polialfabetinį kodą nulaužti gana sunku. Raktinis žodis turi būti labai ilgas, jame negali būti dviejų vienodų raidžių. Pavyzdžiui, pasirinkime raktinį žodį TIGRAS. Toliau surašome abėcėlės raides ir po

abėcėle rikiuojame kodines raides, pradėdami nuo raktinio žodžio. Užrašę raktinį žodį, toliau formuojame kodines raides kaip

Cezario šifre, praleisdami raktinio žodžio raides.

A B C D E F G H I Y J K L M N O P R S T U V Z T I G R A S B C D E F H Y J K L M N O P U V Z

Kaip matote, eilučių pabaigoje abėcėlės ir kodinės raidės sutampa, bet tai nesukliudė metodo patikimumui ir polialfabetinis

kodas buvo laikomas visiškai patikimu daugiau nei šimtą metų. Parašykite programą, kuri pagal parinktą raktinį žodį polialfabetiniu kodu užšifruotų n žodžių. Duomenys. Pirmoje failo ‘U2.txt’ eilutėje yra įrašytas raktinis žodis. Antroje yra reikalingų užkoduoti žodžių skaičius

n (1 n 10). Toliau surašyti žodžiai po vieną eilutėje.

Rezultatai. Ekrane turi būti n eilučių su polialfabetiniu kodu

užšifruotais žodžiais.

U3. Kelias. Gūdučių mokyklos 12 klasės mokiniai nutarė dalyvauti orientavimosi dviračiais varžybose. Jie sudarė komandą ir

atvyko į vietovę Preivai, kur bus duotas startas. Buvo pranešta, kad finišas Balkuose. Kaip ir kitų komandų atstovai, jie gavo vietovės žemėlapį, kuriame pažymėti visi keliai ir surašyti kelių ilgiai. Padėkite mokiniams surasti trumpiausią kelią tarp

nurodytų vietovių, jei žinoma, kad kelias tarp starto ir finišo vietovių gali būti tiesioginis (be tarpinių vietovių) arba tarpe jų

gali būti ne daugiau kaip 3 tarpinės vietovės.

Duomenys. Tekstinio failo ‘U3.txt’ pirmoje eilutėje nurodytas vietovių skaičius N (2≤N≤10) ir visų kelių

kiekis M (1≤M≤50) . Tolimesnėse N eilutėse surašytos visos galimos

vietovės po vieną eilutėje. Po to

eilutėje surašytos starto ir finišo vietovių pavadinimai. Šiai eilutei iš

viršaus ir apačios palikta po vieną

tuščią eilutę. Po antros tuščios eilutės

M eilutėse surašyti visi keliai po

vieną eilutėje. Tokios eilutės

struktūra: pradinė vietovė, galinė

vietovė, atstumas tarp jų. Vietovės

pavadinimas – iki 10 simbolių.

Rezultatai. Rezultatus išveskite į ekraną, kuriame nurodykite trumpiausio kelio ilgį ir paeiliui išvardinkite visas vietoves, per kurias eis trasa.

U1.txt Ekranas

1.0 2.0 4.0 2.0

5.0 6.0

6

1.0 -3.0

4.0 4.0

0.0 -1.0

-1.0 -4.0

-2.0 5.0

2.0 -2.0

0

0

1

0

0

1

2

U2.txt Ekranas TIGRAS

3

GIRIA

BARAVYKAS

LIEPA

BDNDT

ITNTVEHTO

YDAMT

U3.txt Ekranas 5 8

Preivai

Saukai

Salai

Rekai

Balkai

Preivai Balkai

Preivai Saukai 2

Preivai Salai 8

Preivai Balkai 10

Saukai Balkai 7

Saukai Rekai 2

Salai Rekai 4

Salai Balkai 6

Rekai Balkai 2

Minimalus atstumas tarp vietovių

Preivai ir Balkai 6 km

Trasa eina per vietoves:

Preivai

Saukai

Rekai

Balkai

Page 66: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Suvalkijos programuotojų konkursas KTU Informatikos fakultetas Vilkaviškis, 2015 m. vasario 18 d.

U1. Vienetukai. Tarp sveikųjų teigiamų skaičių, neviršijančių ribos n, suraskite tokius skaičius, kuriedvejetainiame formate turi maksimalų vienetukų skaičių. Pavyzdžiui jei skaičiaus riba yra 14, taimaksimalų vienetukų skaičių turi 7, 11, 13, 14.Duomenys. Pirmoje U1.txt failo eilutėje nurodytas ribų skaičius m (1 ≤ m ≤ 20). Tolimesnėse eilutėsenurodytos ribos n (1 ≤ n ≤ 2050) kiekvienam teigiamam sveikam skaičiui. Rezultatai. Ekrane kiekvienai duotai sveikųjų teigiamų skaičių ribai išspausdinkite skaičius, kurie dvejetainiameformate turi maksimalų vienetukų skaičių.

U1.txt Ekranas3141662

7 11 13 141531 47 55 59 61 62

U2. Skaičių seka. Faile surašytos skirtingų mėnesių temperatūros, kurios buvo matuotos kiekvieną dieną.Raskite vieno mėnesio pirmąjį vientisą teigiamų temperatūrų (t ≥ 0) laikotarpį, kurio vidutinė temperatūra buvoaukščiausia. Duomenys. Pirmoje failo u2.txt eilutėje nurodytas mėnesių skaičius n (0 < n ≤ 12). Tolimesnėseeilutėse nurodytos mėnesio temperatūros - sveikieji skaičiai atskirti tarpais (skaitmenų kiekis m = 30).Rezultatai. ekrane, atskiromis eilutėmis spausdinkite rasto laikotarpio temperatūras, kurių vidurkisbuvo didžiausias.U2.txt Ekranas21 2 5 -7 7 5 -8 3 -4 5 6 8 -1 2 3 4 -5 6 9 8 2 -5 3 2 -3 9 0 8 9 8-9 3 5 5 -3 2 1 3 1 2 3 8 -2 8 15 -2 5 4 7 4 -7 5 2 3 -6 4 6 4 4 1

9 0 8 9 88 15

U3. Atostogos. Planuojate atostogų kelionę. Draugai atsiuntė savo planus vasarai. Suraskite laiko intervalą, kadadaugiausia draugų galėtų bendrai pakeliauti. Reikia surasti bent vieną intervalą, kada gali visi draugai, o jei tokionėra – bent vieną intervalą, kada gali daugiausia draugų. Kelionė negali būti pertraukta, dalyviai kelionės metunesikeičia. Prioritetų nėra (tinka bet kuris sąlygą tenkinantis intervalas ir bet kuris maksimalus draugų poaibis).

Duomenys. Faile u3.txt pirmose trijose eilutėse pateikiama: planuojamos keliones ilgis (dienų sk.); draugųskaičius ( ≤ 20 ); dienų skaičius kalendoriuje ( ≤ 60). Likusiose eilutėse draugų planai – eilutės sudarytos iš 0 ir 1(0 – draugas tą dieną gali dalivauti, 1 – negali), eilučių tiek, kiek draugų.

Rezultatai. Ekrane išveskite kiek draugų gali dalyvauti, dalyvaujančių numerius (numeracija nuo 0; nebūtinaišvesti, jei dalyvauja visi) ir kelionės kalendorių.U3.txt (visi gali dalyvauti) Ekranas2 380 1 1 0 0 1 0 00 0 0 0 0 0 0 01 1 1 0 1 0 0 0

30 0 0 0 0 0 1 1

U3.txt (nėra visiems tinkamo laiko) Ekranas6 4 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0

3 0 2 30 0 0 1 1 1 1 1 1 0 0 0 0 0

Page 67: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dr. J. P. Kazicko programavimo konkursas 2015 m. kovo 7 d.

U1. Sandėliuko remontas. Martynui reikia išklijuoti tapetais keletą sandėliukų. Išmatavęs patalpų aukščius ir

bendrus sienų ilgius (kiekvienam sandėliukui atskirai), jis nori išsirinkti tokius tapetus, kurių kaina būtų mažiausia.

Kiekvienas sandėliukas gali būti išklijuotas skirtingais tapetais, bet vienam sandėliukui naudojami tik vienos rūšies

tapetai. Klijuojant tapetus, tapetų negalima sujungti iš ilgio, t.y. nuo lubų iki grindų turi būti vientisa tapetų juosta,

likę tapetai kitam sandėliukui nenaudojami. Tapetų rulonėlių pločiai ir ilgiai yra skirtingi, todėl sunku palyginti

kainas. Pirkti galima tik sveikąjį rulonėlių skaičių. Parašykite programą, kuri nustatytų, kiek kainuos kiekvienos rūšies tapetais išklijuoti atitinkamą sandėliuką ir išrinkti pigiausius tapetus kiekvienam sandėliukui.

Duomenys. Pirmoje „U1.txt“ eilutėje pateiktas sandėliukų skaičius m (1 ≤ m ≤ 20). Antroje eilutėje yra trys

sveikieji skaičiai: sandėliuko aukštis ir bendras sienų ilgis centimetrais bei natūralusis skaičius n1, nurodantis, iš

kelių tapetų rūšių Martynas renkasi. Kiekvienoje iš n1 tolimesnių eilučių pateikiamas tapetų pavadinimas, sudarytas iš vieno žodžio (maksimalus ilgis 10 simbolių), rulono plotis ir ilgis centimetrais bei rulono kaina eurais dviejų

skaitmenų po kablelio tikslumu. Po n1 eilučių vėl pateikiama kito

sandėliuko aukštis ir bendras sienų

ilgis centimetrais bei natūralusis

skaičius n2, nurodantis tapetų rūšių

skaičių. Tolimesnėse n2 eilučių

pateikiamas tapetų pavadinimas,

rulono plotis, ilgis ir kaina. Taip kartojama m kartų (1 ≤ n1, n2, ... nm ≤ 10).

Rezultatai. Ekrane išveskite kiekvienų tapetų kainą ir pigiausių tapetų pavadinimą kiekvienam sandėliukui.

U2. Grąža. Ponas Auksinis, gyvendamas Ekonomikos šalyje, susidūrė su rimta problema. Vietos valdžia, vykdydama keistą ekonomikos politiką, nusprendė nuo šių metų kiekvieną savaitę leisti į apyvartą vis kitokio

nominalo monetas. Sausį buvo dar nieko, tačiau pono Auksinio parduotuvės pardavėjams vasarį pasidarė labai

sunku atiduoti pirkėjams grąžą, nes turėdavo įvairiausių skirtingų nominalų monetų. Dar blogiau – Ekonomikos šalies gyventojai mėgsta "stambius" pinigus ir prašo, kad grąža būtų kuo didesnės vertės monetomis. Parašykite

programą, kuri išskaidytų grąžą monetomis taip, kad būtų kuo mažiau monetų ir kuo didesni nominalai.

Duomenys. Pirmoje „U2.txt“ eilutėje nurodytas turimas nominalų skaičius (1 ≤ s ≤ 6). Antroje eilutėje monetų

nominalų vertės (2 ≤ v ≤ 50). Trečioje eilutėje nurodoma, kiek grąžos reikia

atiduoti (1 ≤ g ≤ 100). Duomenys bus tokie, kad grąžos išskaidymas visada

egzistuos.

Rezultatai. Ekrane išveskite grąžos išskaidymą monetomis, eilutėse po du

skaičius: monetų skaičių ir jų nominalą.

U3. Susitikimas. Grupė draugų nusprendė susitikti mieste, o po to kartu eiti valgyti picos. Bet tuomet jie susiginčijo, kur geriausia susitikti, ir kurioje picerijoje valgyti. Galiausiai draugai nusprendė, jog patogiausia

išsirinkti tokią susitikimo vietą ir piceriją, kad jų nueitų kelių iki susitikimo vietos, po to iki picerijos ir atgal į

pradinius taškus suma būtų mažiausia. Parašykite programą, kuri rastų patogiausią susitikimo vietą ir piceriją.

Duomenys. Pirmoje „U3.txt“ eilutėje duoti du skaičiai n ir m — miesto žemėlapio aukštis ir plotis (2 ≤ n, m ≤ 10).

Toliau pateiktas miesto žemėlapis — n eilučių, kiekvienoje jų – m simbolių. Galimi šie simboliai: . — langelis pereinamas. X — langelis nepereinamas (pastatas, tvora...) P — picerija. Langelis nepereinamas, į piceriją galima įeiti iš

gretimo langelio ir išeiti į bet kurį gretimą langelį. Įeiti galima tik į tą

piceriją, kurioje bus valgoma pica. S — susitikimo vieta. Langelis pereinamas. D — vieno iš draugų pradinė buvimo vieta. Langelis pereinamas.

Judėti galima tik aukštyn, žemyn, į kairę arba į dešinę (ne įstrižai).

Rezultatai. Ekrane atskirose eilutėse atspausdinkite pradines draugų

koordinates (koordinačių pradžia – apatinis kairysis langelis, numeruojama nuo 1, pirmiausiai nurodoma x koordinatė, po to - y).

Atskirose eilutėse atspausdinkite: „Susitikimo vieta“ ir susitikimo vietos

koordinates; „Picerija“ ir picerijos koordinates; „Nueita“ ir draugų nueitų kelių sumą. Jei susitikimo vietos ar picerijos, kurias visi draugai galėtų pasiekti, nėra, atspausdinkite žodį

„Neimanoma“.

U1.txt Ekranas

2

250 820 3

BlueSea 50 1050 18.50

LightBlue 53 1000 22.90

OrangeSky 41 1250 24.00

250 900 2

Spring 45 1260 21.30

LightGreen 48 1240 21.40

BlueSea 92.50

LightBlue 91.60

OrangeSky 96.00

Pigiausi tapetai LightBlue

Spring 85.20

LightGreen 107.00

Pigiausi tapetai Spring

U2.txt Ekranas

4

11 3 7 39

40

3 11

1 7

U3.txt Ekranas

5 5

P.X.P

..XS.

S.X..

..X.D

D.X..

1 1

5 2

Neimanoma

5 5

D...P

XX...

D.S.P

XX...

D.S..

1 1

1 3

1 5

Susitikimo vieta 3 3

Picerija 5 3

Nueita 32

Page 68: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Aukštaitijos programuotojų konkursas KTU Informatikos fakultetas Pasvalys, 2016 m. vasario 26 d.

Žemaitijos programuotojų konkursas Kuršėnai, 2016 m. vasario 26 d.

U1. Spalvų kodas. Elektros schemose naudojamos varžos žymimos keturių spalvų žiedais. Spalvų reikšmė koduoja

varžos reikšmę matavimo vienetais omais bei maksimalią šios reikšmės paklaidą procentais. Pirmojo žiedo spalva

nurodo pirmą varžos omais skaitmenį, antrojo - antrą skaitmenį, trečiojo – daugiklio 10P laipsnį P, o paskutiniojo -

paklaidą procentais.

Spalvos: juoda, ruda, raudona, oranžinė, geltona, žalia, mėlyna, violetinė, pilka, balta yra atitinkamai priskirtos

skaitmenims nuo 0 iki 9. Paklaida % vaizduojama taip: auksinė - 5%, sidabrinė - 10%, bespalvė - 20%. Be to,

žymėjimuose pirmas arba pirmas ir antras žiedai niekada nebūna juodos spalvos.

Duomenys. Tekstinio failo 'U1.txt' pirmoje eilutėje nurodytas varžų skaičius n < 100. Tolesnėse eilutėse pateiktos

varžų reikšmės kartu su jų paklaida po '+' simbolio. Didelio nominalo varžos reikšmė trumpinama priešdėliu (k -

1000, M - 1000000, G - 1000000000).

Rezultatai. Į ekraną išveskite eilutėse esančių varžų žiedų spalvas žodžiais.

U1.txt Ekranas Komentaras

4

1k+5

470k+20

10+10

2.2M+5

ruda juoda raudona auksinė

geltona violetinė geltona bespalvė

ruda juoda juoda sidabrinė

raudona raudona žalia auksinė

1000 omų varža, 5% paklaida

470000 omų varža, 20% paklaida

10 omų varža, 10% paklaida

2.2 mega omų varža, 5% paklaida

U2. Pagrindiniai romėniškieji skaitmenys yra septyni skaičiai: I – 1, V – 5, X – 10, L – 50, C – 100 (centum –

„šimtas“), D – 500, M – 1000 (mille – „tūkstantis“). Skaičių kombinacijos sudaromos laikantis tam tikrų taisyklių:

II – 2, III – 3, IV – 4, VI – 6, VII – 7, VIII – 8, IX – 9. Romėniškojo skaičiaus reikšmė nustatoma taip: jei didesnis

skaitmuo yra prieš mažesnį arba du skaitmenys yra vienodi, tai jie sudedami, o jei mažesnis yra prieš didesnį, tai

mažesnis atimamas iš didesnio. Pavyzdžiui, MCXLIV = 1000 + 100 + 50 – 10 + 5 – 1 = 1144.

Parašykite programą, kuri duotą skaičių romėniškais skaitmenimis paverstų dešimtainės skaičiavimo sistemos

skaičiumi ir atvirkščiai.

Duomenys. Faile 'U2.txt' yra n (1 ≤ n ≤ 20) romėniškų skaičių. Pirmoje eilutėje yra skaičius n. Tolesnėse eilutėse

po vieną yra romėnišką skaičių (<10 simbolių). Toliau yra k (1 ≤ k ≤ 20) dešimtainių skaičių. Atskiroje eilutėje

yra skaičius k, o toliau po vieną eilutėje yra dešimtainiai skaičiai (<3000).

Rezultatai. Ekrane spausdinkite po vieną eilutėje romėniškąjį skaičių ir jo užrašą arabiškais skaitmenimis, skiriant

vienu tarpo simboliu. Toliau analogiškai dešimtainį skaičių ir jam atitinkantį romėniškąjį skaičių, skiriamus vienu

tarpo simboliu.

U2.txt Ekranas

4

MCMLIV

LXX

DCLVIII

MDCCCXLVI

3

9

2222

751

MCMLIV 1954

LXX 70

DCLVIII 658

MDCCCXLVI 1846

9 IX

2222 MMCCXXII

751 DCCLI

U3. Cilindras. Matrica A(n, m) vaizduoja languoto popieriaus lapą. Iš lapo suklijavom n aukščio cilindrą. Cilindro

klijavimui lapo langelių nepanaudojome. Į kiek gabaliukų subyrės cilindras, jei iš jo iškirpsime kai kuriuos

langelius. Iškerpami langeliai matricoje žymimi 0.

Duomenys. Tekstinio failo ‘U3.txt’ pirmoje eilutėje nurodyti dydžiai n (2≤ n ≤30) ir m (2≤ m ≤30), tolimesnėse

eilutėse išdėstytos tvarkingai, skiriant vienu tarpu, matricos A(n, m) reikšmės.

Rezultatai. Į ekraną išveskite pradinius duomenis. Žemiau išveskite skaičių, į kiek gabaliukų subyrės cilindras.

U3.txt Ekranas

4 5

1 1 0 1 1

1 1 0 1 0

1 0 1 0 1

1 1 0 1 1

Pradiniai duomenys:

1 1 0 1 1

1 1 0 1 0

1 0 1 0 1

1 1 0 1 1

2 gabaliukai

Page 69: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dzūkijos programuotojų konkursas KTU Informatikos fakultetas Druskininkai, 2016 m. vasario 19 d.

Kauno programuotojų konkursas Kaunas, 2016 m. vasario 19 d.

U1. Trikampiai. Duota N trikampių (2≤N≤100). Kiek yra trikampių porų, kuriose vienas iš trikampių yra kito

trikampio viduje? Galimos poros sudaromos iš eilės: 1 ir 2, 2 ir 3, 3 ir 4, ... , N-1 ir N. Poros trikampiai negali

vienas kito kirsti, tačiau gali liestis, t.y. turėti bendrą (-us) tašką (-us) ar bendrą (-as) kraštinę (-es).

Duomenys. Tekstinio failo U1.txt pirmoje eilutėje yra skaičius, kuris nurodo, kiek yra trikampių. Toliau

kiekvieno trikampio koordinatėms (sveikieji skaičiai) skirta po vieną eilutę: x1, y1, x2, y2, x3, y3.

Rezultatai. Ekrane spausdinkite poras sudarančių trikampių porų numerius ir porų kiekį. Jeigu tokių porų nėra

spausdinkite „Porų nėra.“.

U1.txt Ekranas

5

5 2 0 2 5 7

6 5 6 -6 0 0

3 1 6 -3 3 -3

13 1 7 1 7 7

10 4 7 1 7 7

2-a pora

4-a pora

Viso porų: 2

U2. Ikimokyklinė įstaiga. Vienoje ikimokyklinėje įstaigoje vaikai skirstomi į tris amžiaus grupes: lopšelio (1, 2

metų vaikai), darželio (3, 4, 5 metų vaikai) ir priešmokyklinės (6 metų vaikai). Rugsėjo pirmąją visos trys grupės

buvo užpildytos į amžiaus grupes patenkančiais vaikais, tačiau dalis vaikų į ikimokyklinę įstaigą nepateko. Kitų

metų rugsėjo pirmąją jie dar galės patekti, jei pagal jų amžiaus grupę atsiras laisvų vietų. Kai vaikams sueina 7

metai, jie palieka ikimokyklinę įstaigą ir pradeda eiti į mokyklą. Kiekvieną rugsėjo pirmąją pirmiausia į vyresniųjų

grupes perkeliami vaikai iš jaunesniųjų grupių. Jei vyresniųjų grupėje laisvų vietų nėra, vaikai lieka jaunesniųjų

grupėje, ir kitais metais keliami į vyresniųjų grupę pirmumo tvarka. Tada į ikimokyklinę įstaigą priimami vaikai,

kurie buvo nepatekę ankstesniais metais (pagal tai, kuris pirmas įrašytas laukiančiųjų sąraše). Vaikas priimamas tik

tuo atveju, jei jo amžiaus grupėje yra laisvų vietų. Tarkime, kad nauji vaikai į ikimokyklinę įstaigą nebus priimami,

kol laukiančiųjų sąrašas neištuštės.

Duomenys. Tekstinio failo U2.txt pirmoje eilutėje yra 6 sveikieji skaičiai a1, a2, a3, a4, a5, a6 (2≤ a1, a2, a3, a4,

a5, a6≤50), kurie atitinkamai nurodo, kiek ikimokyklinėje įstaigoje rugsėjo pirmąją yra 1, 2, 3, 4, 5 ir 6 metų vaikų.

Antroje eilutėje sveikasis skaičius N (1≤N≤30) – kiek vaikų nepateko į ikimokyklinę įstaigą. Tolimesnėse eilutėse

– laukiančiųjų sąrašas, kuriame, skiriant vienu tarpu, pateiktas kiekvieno nepatekusio vaiko vardas (iki 10

simbolių) ir amžius a (1≤a≤5).

Rezultatai. Ekrane atspausdinkite kiekvieno vaiko iš nepatekusiųjų sąrašo vardą ir ar jis pateks į ikimokyklinę

įstaigą. Jei vaikas pateks, tuomet ekrane atspausdinkite grupę bei po kelių metų jis į tą grupę pateks.

U2.txt Ekranas

7 15 4 12 15 15

4

Jonas 1

Petras 3

Deimantė 5

Lina 4

Jonas pateks į lopšelio grupę po 1 metų

Petras pateks į darželio grupę po 2 metų

Deimantė į ikimokyklinę įstaigą nepateks

Lina pateks į priešmokyklinę grupę po 2 metų

U3. Aukščio pokyčiai. Gudučių mokyklos mokiniai gavo užduotį atlikti matavimus ir rasti nurodytos vietovės

didžiausią aukščio pokytį jos dalyje, kai einant tik horizontaliai arba tik vertikaliai aukštis tik didėja. Jei yra keli

vienodi didžiausi, reikia rasti bet kurį vieną. Tam jie pasiėmė vietovės žemėlapį ir vietovę padalino į nm vienodų

dalių: n – vertikalių dalių (eilučių) kiekis, m – horizontalių dalių (stulpelių) kiekis. Dalis sunumeravo pradedant

nuo viršutinio kairio kampo. Kiekviena dalis identifikuojama jos eilutės ir stulpelio numeriais i,j: i – eilutės

numeris, j – stulpelio numeris. Pirmos dalis numeris 1,1. Matavimus atliko kiekvienos dalies centre jūros lygio

atžvilgiu (m): aukštis > 0 – aukščiau jūros lygio, aukštis < 0 – žemiau. Padėkite mokiniams atlikti skaičiavimus ir

rasti maksimalų aukščio pokytį tik iš eilės esančių dalių sekose, kai iš vienos dalies į kitą galima pereiti tik

vertikaliai arba tik horizontaliai (vienoje sekoje – viena kryptis). Seką sudarančių dalių aukščiai gali tik didėti.

Duomenys. Tekstinio failo U3.txt pirmoje eilutėje yra du skaičiai: n ir m, kurie rodo dalių eilučių ir stulpelių

kiekį: 1 <= n, m <= 30. Toliau surašyti visų dalių išmatuoti aukščiai (m) eilutėmis pradedant nuo viršutinio kairio

kampo.

Rezultatai. Ekrane spausdinkite pradinės vietovės dalies numerį, galinės dalies numerį ir aukščio pokytį. Jei

pokyčių nėra, spausdinkite pranešimą: Pokyčio nėra.

U3.txt Ekranas

4 4

4 52 13 2

9 0 0 4

4 -1 -5 -1

4 -8 -5 2

Pradinės dalies numeris: 4 2

Galinės dalies numeris: 1 2

Aukščio pokytis: 60

Page 70: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Suvalkijos programuotojų konkursas KTU Informatikos fakultetas Vilkaviškis, 2016 m. vasario 15d.

U1. Skaičių laipsniai. Duotame intervale (a, b) raskite visus natūraliuosius skaičius, kurie gali būti išreikšti

formatu xn

(x pakelta n – tuoju laipsniu, x ir n yra natūralieji skaičiai). Jei yra keli skaičiaus kėlimo laipsniu

variantai, imkite su didesniu laipsnio rodikliu.

Duomenys. Tekstinio failo 'U1.txt' pirmoje eilutėje nurodyti intervalo rėžiai a ir b (a ≤ b, 2 ≤ a, b ≤ 1000000).

Rezultatai. Ekrane atskirose eilutėse spausdinkite rastą natūralųjį skaičių, laipsnio pagrindą ir laipsnio rodiklį taip,

kaip parodyta pavyzdyje. Po skaičiaus dėkite lygybės ženklą (=), o ^ simboliu žymėkite skaičiaus kėlimo laipsniu

operaciją. Jeigu duotame natūralių skaičių intervale nėra nei vieno skaičiaus, išreikšto sąlygoje nurodytu laipsnio

kėlimo formatu, tuomet ekrane spausdinkite pranešimą “NERA”.

U1.txt Ekranas U1.txt Ekranas

40 110

49 = 7^2

64 = 2^6

81 = 3^4

100 = 10^2

101 120 NERA

U2. Įmonės stabilumas. Pateikti keliolikos metų duomenys apie įmonės pelną (nuostolį) per metus (milijonais

eurų). Šiais neramios ekonomikos laikais įdomu, kaip (ne)stabiliai įmonė dirba. Vienas iš įverčių gali būti, kiek

kartų rodiklis (pelnas arba nuostolis) „peršoko“ per vidurkį (suskaičiuotą iki tų metų neimtinai). Parašykite

programą, randančią tuos „šuolius“.

Duomenys. Pirmoje duomenų failo 'U2.txt' eilutėje įrašyti pradiniai analizės metai m ir metų kiekis n (2 ≤ n ≤ 50).

Antroje eilutėje nurodytos pelno (teigiami skaičiai) arba nuostolio (neigiami skaičiai) reikšmės.

Rezultatai. Rezultatai turi būti išvedami ekrane: pirmoje eilutėje turi būti išspausdintas „šuolių“ kiekis, antroje –

tarpais atskirti metai, kuriais tai įvyko.

U2.txt Ekranas

2000 10

4 10 -5 -5 11 3 0 2 9 5

3

2002 2004 2008

1 pav. Situacijos grafinis atvaizdavimas

U3. Lentelės pasukimas. Pateikta n eilučių ir m stulpelių (2 ≤ n, m ≤ 10) lentelė, užpildyta lotyniškos abėcėlės

simboliais. Parašykite programą, kuri pasuktų lentelę pagal laikrodžio rodyklę kampu k (0° ≤ k ≤ 360°), kartotiniu

45°.

Duomenys. Pirmoje duomenų failo 'U3.txt' eilutėje įrašyti trys sveikieji skaičiai n, m ir k. Tolesnėse n eilučių

įrašyta po m simbolių.

Rezultatai. Ekrane išvesta kampu k pasukta lentelė.

U3.txt Ekranas U3.txt Ekranas U3.txt Ekranas

3 4 45

Rasa

Rima

Rita

3 2 90

ra

ga

na

3 3 225

oma

ona

opa

-6

-4

-2

0

2

4

6

8

10

12

2000 2001 2002 2003 2004 2005 2006 2007 2008 2009

Pelnas (nuostolis)

Vidurkis (metais vėluojantis)

Page 71: Dr. J. P. Kazicko programavimo - medziaga.puslapiai.ltmedziaga.puslapiai.lt/programavimas_ktu_forumas.pdf · tokių yra keletas, tai visus tokius; /5 balai/ A7. Pasakytų, ar visos

Dr. J. P. Kazicko programavimo konkursas 2016 m. kovo 19 d.

(-10,40) (40,40)

(30,20)

(-20,0)

(-10,10)

(-20,20)

(30,0)

(40,10)

(-10,-30)

(-10,-10) (40,-10)

(40,-30)

U1. Robotas. Sukonstravus robotą reikia parašyti programas, kurios valdytų jo veiksmus. Parašykite programą, kuri

imituotų roboto judėjimą. Komanda yra vienas žingsnis: A (atgal -x), P (pirmyn +x), K (kairėn +y), D (dešinėn -y).

Ant bandymų stalo yra du robotai. Stalas sudalintas į kvadratėlius, kurie atitinka vieną roboto žingsniuką. Stalo centro

koordinatės yra (0; 0). Nuo centro į visas puses yra po 100 žingsniukų. Robotų pradinės padėtys yra (x1; y1) ir

(x2; y2). Kiekvienas robotas tuo pačiu metu gauna kurią nors komandą. Robotai sustoja, kai jie susiduria (avarija)

arba baigiasi komandų seka.

Duomenys. Faile U1.txt yra trys komandų sekos. Kiekvienai sekai yra

skirtos dvi eilutės. Pirmoje yra pradinės robotų koordinatės (x1; y1) ir

(x2; y2) ir komandų skaičius n (2≤n≤20). Antroje eilutėje yra

komandų seka. Nelyginėse vietose yra komandos pirmam robotui, o

lyginėse – antram. Sekos parinktos tokios, kad robotai nenukris nuo stalo.

Rezultatai. Ekrane spausdinkite kiekvienai komandų sekai po vieną

eilutę. Tai pirmo ir antro robotų koordinatės, kai jie sustos ir žodį

AVARIJA, jeigu robotai susidūrė.

U2. Siuntos. Džiunglių genties upių pašto pastotė turi vieną valtį, į kurią telpa 3 siuntos. Siuntą apibūdina keturi

sveikieji skaičiai: eilės numeris (1 ≤ numeris ≤ 100), buvimo pastotėje laikas dienomis (0 ≤ laikas ≤ 365),

prioritetas (0 ≤ prioritetas ≤ 5) ir svoris tonomis (1 ≤ svoris ≤ 10). Sprendžiant, kurias siuntas pervežti

eilinės valties kelionės metu, kiekvienai siuntai skaičiuojamas įvertis prioritetas*2 + laikas, prie kurio

pridedama 10, jei siunta išbuvo pastotėje 15 dienų ar daugiau. Siunta, turinti didžiausią įvertį, kraunama į valtį. Tai

kartojama kol valtis užsipildo. Jei dvi siuntos turi tą patį įvertį, laimi siunta, kurios laikas didesnis. Jei ir laikai

sutampa, laimi siunta, kurios eilės numeris mažesnis. Viena valties kelionė iš viso trunka 3 dienas plius po 1 dieną

kiekvienai krovinio svorio tonai. Parašykite programą, kuri sumodeliuotų siuntų vežimą iš pastotės.

Duomenys. Tekstinio failo U2.txt pirmoje eilutėje nurodytas siuntų kiekis. Antroje, trečioje ir ketvirtoje eilutėse,

pradedant nuo pirmosios siuntos, nurodyti siuntų duomenys: antroje – pradiniai siuntų buvimo pastotėje laikai; trečioje

– siuntų prioritetai; ketvirtoje – siuntų svoriai.

Rezultatai. Ekrane spausdinkite tris eilutes. Pirmoje nurodykite siuntų krovimo į valtį eilę – siuntų eilės numerius.

Antroje nurodykite galutinius

siuntų buvimo pastotėje

laikus. Trečioje nurodykite

laiką, nuo pirmosios valties

kelionės pradžios, kurio

reikės, kad visos siuntos

paliktų pastotę.

U3. Plotas ir perimetras. Duota n (1 ≤ n ≤ 50) stačiakampių, kurių

kraštinės yra lygiagrečios koordinačių ašims. Parašykite programą, kuri

suskaičiuotų: a) bendrą visų stačiakampių užimamą plotą, atsižvelgiant į tai, jog

stačiakampiai gali tarpusavyje persidengti; b) ilgiausios perimetro linijos ilgį.

Perimetro linija – tai kelias aplink užimtos srities plotą. Sritį gali sudaryti

nesiribojantis stačiakampis arba besiliečiantys stačiakampiai, arba

persidengiantys stačiakampiai.

Duomenys. Duomenų failo U3.txt pirmoje eilutėje duotas skaičius n, o

tolesnėse eilutėse duota po 4 skaičius x1, y1, x2, y2, kur (x1, y1) ir

(x2, y2) yra stačiakampio apatiniojo kairiojo ir viršutiniojo dešiniojo kampo

koordinatės (x1, y1, x2, y2 – sveikieji skaičiai; -50 ≤ x1, y1, x2, y2

≤ 49).

Rezultatai. Ekrane spausdinkite pradinius duomenis, bendrą stačiakampių

užimamą plotą ir ilgiausios perimetro linijos ilgį.

U1.txt Ekranas

-5 6 9 14 10

KKADPKPDAD

2 3 6 7 12

PAPAKDKDAPPA

5 5 -1 -1 2

PP

-5 7 9 13

4 5 4 5 AVARIJA

6 5 0 -1

U2.txt Ekranas

10

5 2 3 4 5 6 7 8 9 10

0 0 0 1 0 0 0 1 0 0

1 1 1 2 3 1 1 2 1 1

10 8 9 7 6 4 1 5 3 2

10 8 9 14 13 11 19 19 17 24

22

U3.txt Ekranas

3

-20 0 30 20

-10 10 40 40

-10 -30 40 -10

-20 0 30 20

-10 10 40 40

-10 -30 40 -10

Bendras plotas 3100

Ilgiausios perimetro linijos ilgis 200