Középiskolai Matematikai és Fizikai Lapok
Informatika rovattal
Kiadja a MATFUND Alapítvány
Már regisztráltál?
Új vendég vagy?

A KöMaL 2021. decemberi informatika feladatai

Kérjük, ha még nem tetted meg, olvasd el a versenykiírást.


Feladat típusok elrejtése/megmutatása:


I-jelű feladatok

A beküldési határidő 2022. január 17-én LEJÁRT.


I. 550. Egy bolha tartózkodik a számegyenes 0 pontján. Kétféle mozgásra képes: \(\displaystyle B\) hosszút tud ugrani balra, vagy \(\displaystyle J\) hosszút tud ugrani jobbra (\(\displaystyle 1\le B, J\le 100\) egész számok). Adjuk meg, hogy eljuthat-e a bolha egy tetszőleges \(\displaystyle C\) (\(\displaystyle -100\le C\le 100\)) számhoz. Ha eljuthat, akkor adjuk meg a legrövidebb ugrássorozat hosszát, valamint azt, hogy hány balra és hány jobbra ugrással lehet eljutni 0-tól \(\displaystyle C\)-ig.

Készítsünk programot, amely a standard bemenet első sorából beolvassa \(\displaystyle B\), \(\displaystyle J\) és \(\displaystyle C\) értékét, majd a standard kimenet egyetlen sorába írja a legrövidebb ugrássorozat hosszát, a balra, valamint a jobbra ugrások számát, illetve 0-t, ha a \(\displaystyle C\) számhoz a bolha nem tud eljutni. Ha több ugrássorozat van, amellyel a \(\displaystyle C\) számhoz a legkevesebb ugrással el lehet jutni, akkor bármelyik megadható.

Példák:

BemenetKimenet
5 3 106 1 5
21 73 5020 15 5
48 82 730

Beküldendő egy tömörített i550.zip mappában a megoldást adó program forráskódja és egy rövid dokumentáció, amely megadja, hogy a forrásállomány melyik fejlesztői környezetben fordítható.

(A 2021 októberében kitűzött K. 701. feladat alapján)

(10 pont)


I. 551. Különböző vastagságú falakat szeretnénk készíteni. Ehhez háromféle, 1, 2 és 3 cm vastagságú lapok állnak rendelkezésre.

Táblázatkezelő program segítségével oldjuk meg a falak készítéséhez használandó lapok számának és sorrendjének számításához kapcsolódó következő feladatokat.

1. Hozzuk létre a táblázatkezelőben a fal nevű állományt a program alapértelmezett formátumában.

2. Nevezzük át az első munkalapot sorrend névre.

Minta a sorrend munkalaphoz

3. Határozzuk meg az A1:A60-as tartomány celláiban, hogy hányféle lényegesen különböző sorrendben lehet balról jobbra összeilleszteni a lapokat úgy, hogy a fal vastagsága az adott cella sorának értékével egyezik meg. (Lényegesen különböző a sorrend, ha az egymás után elhelyezett lapok vastagsága legalább egy helyen eltér, például 3 cm-es falvastagságnál 4 lényegesen különböző összeállítás van: \(\displaystyle 1,1,1\); \(\displaystyle 1,2\); \(\displaystyle 2,1\) és 3.)

4. Hozzuk létre a max10 nevű munkalapot és állítsuk be a mintaképen látható szürke hátterű cellákat és formátumukat.

5. Ezen munkalap B, C és D oszlopában a második sortól kezdve soroljuk fel, hogy hány 3, 2 és 1 cm-es lapot használhatunk fel a fal elkészítéséhez, ha a fal vastagságát az A2 cellába írt pozitív egész szám adja és mindhárom vastagságból legfeljebb 10–10 lapot használhatunk fel.

6. A kép A3 cellájában olvasható üzenet csak akkor jelenjen meg, ha a megadott falvastagság eléréséhez legalább egyféle lapból 10-nél több darabra lenne szükség. Ebben az esetben a többi cella maradjon üres a B–F oszlopokban a második sortól kezdve.

7. Az E oszlopban határozzuk meg, hogy az adott darabszámokból hány lényegesen különböző összeállítás lehetséges. Például 14-es falvastagság összeállítható többek között 4 db 3 cm-es és 1 db 2 centiméteres lapból. Ezek 5 lehetséges sorrendben tehetők egymás után: \(\displaystyle 3,3,3,3,2\); \(\displaystyle 3,3,3,2,3\); \(\displaystyle 3,3,2,3,3\); \(\displaystyle 3,2,3,3,3\) és \(\displaystyle 2,3,3,3,3\). Ezért ebben a sorban az E oszlopba 5 kerül, természetesen képlet felhasználásával.

8. Az F2 cellában összesítsük az E oszlopban felsorolt esetenkénti sorrendeket.

Minta a max10 munkalaphoz

Segédszámításokat mindkét munkalapon a P oszloptól kezdődően végezhetünk. A megoldáshoz makró vagy más program nem használható, csak a táblázatkezelő beépített függvényei.

Beküldendő egy i551.zip tömörített állományban a munkafüzet és egy rövid dokumentáció, amely megadja, hogy a megoldás milyen táblázatkezelő program melyik verziójában készült és egy kb. ötsoros magyarázat a megoldások módszeréről.

(10 pont)


I. 552. (É). Az emberiség történelme során többféle számírás és számolási módszer alakult ki. A helyiértékes számrendszer használatának elterjedése előtt a számokat különféle jelekkel, jelcsoportokkal írták le. Az ókori görögöknél az i.\(\displaystyle \,\)e. V. században kialakult alfabetikus számírásban például az ABC betűi jelentették a számokat. A megfeleltetés \(\displaystyle \mathrm{alfa(A)}=1\), \(\displaystyle \text{béta(B)}=2\), \(\displaystyle \ldots\ \)egészen kilencig, majd \(\displaystyle \text{ióta(I)}=10\), \(\displaystyle \mathrm{kappa(K)}=20\) stb. A betűkkel nem jelölt számokat a betűkből álló ,,szavak'' segítségével adták meg: a szó értéke a benne szereplő betűk számértékének összegével volt egyenlő.

Alkalmazzuk az alfabetikus számítást az angol ABC betűire, vagyis \(\displaystyle \mathrm{A}=1\), \(\displaystyle \mathrm{B}=2\), \(\displaystyle \ldots\ \)és végül \(\displaystyle \mathrm{Y}=700\) és \(\displaystyle \mathrm{Z}=800\). A következő feladatokban ezekkel a ,,számokkal'' kell számolni és műveleteket végezni. A számokat minden esetben az angol ABC nagybetűivel jelöljük. A feladatok megoldása során törekedjünk a mintának megfelelő input/output megvalósítására. A bemeneteket nem kell ellenőrizni, azok a leírásnak megfelelő, helyes értékek. A kommunikáció során az ékezetmentes kiírás is elfogadott.

1. Írjuk ki az angol ABC nagybetűit.

2. Írjuk ki a fenti nagybetűkkel jelölt számokat.

3. Kérjünk be a felhasználótól egy számot jelentő betűt, és adjuk meg a számértékét.

4. Kérjünk be a felhasználótól egy számot jelentő szót (legföljebb 10 betű), és adjuk meg a számértékét.

A számok felírása nem egyértelmű, például a 31 felírható LA, AJK vagy akár JDGJ alakban is.

5. Kérjünk be a felhasználótól két számot jelentő szót (legföljebb 10 betű), és adjuk meg, hogy egyenlő értékű-e a két szó.

6. Kérjünk be a felhasználótól egy tízes számrendszerben felírt számot, és adjuk meg a neki megfelelő legrövidebb szavak egyikét.

7. Kérjünk be a felhasználótól egy tízes számrendszerben felírt számot, és adjuk meg a neki megfelelő hárombetűs szavak mindegyikét.

Minta:

Beküldendő egy i552.zip tömörített állományban a megoldás forráskódja, valamint egy rövid dokumentáció, amely megadja, hogy a program melyik fejlesztői környezetben futtatható.

(10 pont)


I/S-jelű feladatok

A beküldési határidő 2022. január 17-én LEJÁRT.


I/S. 58. Egy épület alaprajza egy \(\displaystyle N\) oszlopból és \(\displaystyle N\) sorból álló négyzetráccsal szemléltethető. A négyzetrács minden egységnégyzete kétféle lehet: foglalt, vagy szabad. Foglalt egységnégyzeteknek megfelelő területekre nem léphet senki, szabad egységnégyzeteknek megfelelő területeken viszont szabadon lehet sétálni.

Tűzriadó esetén az épület minden szabad négyzettel adott területén egy fluoreszkáló nyíl jelenik meg, amely mutatja, merre kell továbbhaladni, hogy biztonságosan elhagyhassuk az épületet. Egy nyíl négy különböző irányba mutathat az alaprajzon: fel, jobbra, le, balra.

Miután felfestésre kerültek a nyilak, tűzriadót tartanak az épületben, hogy kipróbálják, mindenhova jó irányba mutató nyíl került-e. A próba kezdetén minden szabad egységnégyzetnek megfelelő területen pontosan egy ember áll. Minden időegység alatt mindenki megpróbálja végrehajtani az alatta lévő nyíl által mutatott parancsot.

Az alaprajzot és a tűzriadó tervét egy \(\displaystyle T\) tömb írja le. Az alaprajzon az \(\displaystyle i\)-edik sor \(\displaystyle j\)-edik egységnégyzetének állapotát a \(\displaystyle T[i][j]\) tömbelem értéke adja: \(\displaystyle \text{'*'}= \text{foglalt}\), \(\displaystyle \text{'F'}= \text{felfele}\) nyíl, \(\displaystyle \text{'J'}=\text{jobbra}\) nyíl, \(\displaystyle \text{'L'}=\text{lefele}\) nyíl és \(\displaystyle \text{'B'}=\text{balra}\) nyíl.

Ha egy ember alatt lévő nyíl egy szabad területre mutat, akkor oda átlép az illető. Ha foglalt cellára mutat, akkor helyben marad. Ha az épületből kifelé mutat, akkor biztonságban kijut az épületből és többé nem megy vissza oda a próba során. A próba \(\displaystyle M\) időegységig tart. Adjuk meg, hogy \(\displaystyle M\) időegység után hányan vannak még az épületben.

A bemenet első sorában az \(\displaystyle N\) és \(\displaystyle M\) egész szám található. A következő \(\displaystyle N\) sor mindegyikében \(\displaystyle N\) karakter található: az \(\displaystyle i\)-edik sor \(\displaystyle j\)-edik eleme \(\displaystyle T[i][j]\).

A kimenet egyetlen sorában egy szám szerepeljen: az \(\displaystyle M\) időegység után az épületben lévő személyek száma.

Példa:

Bemenet (a / sortörést helyettesít)Kimenet
4 6 / JJFF / F*BB / FLJJ / FBJB6

A kezdetben a \(\displaystyle T[2][3]\), \(\displaystyle T[2][4]\), \(\displaystyle T[3][2]\), \(\displaystyle T[4][2]\), \(\displaystyle T[4][3]\), \(\displaystyle T[4][4]\) egységnégyzeteken álló emberek maradnak az épületben 6 időegység után.

Korlátok: \(\displaystyle 1\le N\le 750\), \(\displaystyle T[i][j]\in \{\text{'*'},\text{'F'},\text{'J'},\text{'L'},\text{'B'}\}\). Időlimit: 0,3 mp.

Értékelés: a pontok 50%-a kapható, ha \(\displaystyle 1\le N\le 30\).

Beküldendő egy is58.zip tömörített állományban a megfelelően dokumentált és kommentezett forrásprogram, amely tartalmazza a megoldás lépéseit, valamint megadja, hogy a program melyik fejlesztői környezetben futtatható.

(10 pont)


S-jelű feladatok

A beküldési határidő 2022. január 17-én LEJÁRT.


S. 157. Álmos és Sára kaptak egy nagy tábla mogyorós csokoládét karácsonyra. A csokoládé \(\displaystyle N\times N\) db négyzet alakú mezőből áll. Egyes mezőkben van mogyoró, más mezőkben nincs. Úgy szeretnék elosztani a csokoládét, hogy a kapott mogyorós részek számának különbsége minél kisebb legyen. Nem szeretnék azonban túl sok részre vágni a csokoládét, így először \(\displaystyle N\) hosszú és egy mező széles sávokra vágják, majd minden sávot középen kettévágnak és az egyik felét Álmos, a másikat Sára kapja (\(\displaystyle N\) páros szám). Azt, hogy ki melyik részt kapja, minden sávra külön-külön eldönthetjük. A sávokra vágást soronként és oszloponként is el lehet végezni, így mindkét lehetőséget meg kell vizsgálni.

Készítsünk programot, amely egy tábla mogyorós csokoládéra megadja, mennyi a legkisebb különbség, ami Álmos és Sára mogyorót tartalmazó mezőinek száma között lehet. Azt is adjuk meg, hogy ehhez soronként vagy oszloponként kell-e felvágni a csokoládét.

Bemenet: az első sor tartalmazza a méretet megadó \(\displaystyle N\) számot. A következő \(\displaystyle N\) sor mindegyike \(\displaystyle N\) számot tartalmaz. Ezek mindegyike 0, ha nincs mogyoró a mezőn és 1, ha van.

Kimenet: az első sorba egy S karakter írjunk, ha a legkisebb különbséget soronkénti felvágással is el lehet érni, különben pedig egy O karaktert. A második sorba az elérhető legkisebb különbség kerüljön.

Példa:

Magyarázat: A csokoládé mindkét felvágással igazságosan elosztható.

Korlátok: \(\displaystyle 2\le N\le 500\), \(\displaystyle N\) páros. Időlimit: 1 mp.

Értékelés: a pontok 30%-a kapható, ha \(\displaystyle N\le 10\).

Beküldendő egy s157.zip tömörített állományban a megfelelően dokumentált és kommentezett forrásprogram, amely tartalmazza a megoldás lépéseit, valamint megadja, hogy a program melyik fejlesztői környezetben futtatható.

(10 pont)


Figyelem!

Az informatika feladatok megoldásait ne e-mailben küldd be! A megoldásokat az Elektronikus munkafüzetben töltheted fel.