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 2022. májusi 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. június 15-én LEJÁRT.


I. 565. Az előző havi számunkban megjelent tréfás fejtörő a következő volt: ,,Helyezzünk el hat fehér bábut egy sakktáblára két világos készletből úgy, hogy egy sötét bábut letéve bármely szabad mezőre, az biztosan üthető legyen.''

Készítsünk programot, amely egy fejtörő megoldását ellenőrzi, tehát megadja, hogy az elhelyezésben valóban minden szabadon maradt mezőt ütésben tartanak-e a világos bábuk.

A program a standard bemenet nyolc sorából olvasson be egy elhelyezést. A sakkbábuk betűjele: \(\displaystyle \text{vezér}=\text{V}\), \(\displaystyle \text{bástya}=\text{B}\), \(\displaystyle \text{huszár}=\text{H}\), \(\displaystyle \text{futó}=\text{F}\), \(\displaystyle \text{király}=\text{K}\), \(\displaystyle \text{gyalog}=\text{G}\). Az üresen álló mezőket egy-egy szóköz jelöli.

Ha az elhelyezés megfelelő, akkor a program az OK üzenetet jelenítse meg a standard kimeneten. Ha az elhelyezés nem jó, akkor a program a standard kimenet nyolc sorába írja ki a sakktáblát, jelölve a világos bábukat, illetve jelenjen meg egy-egy X karakter azokon a mezőkön, amelyek nincsenek ütésben.

Példa:

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

(10 pont)

megoldás, statisztika


I. 566. (É). A 2022. januári számban megjelent I. 553. feladatban egy tízes számrendszerben adott számot kellett megadni faktoriális számrendszerben. A faktoriális számrendszerben megadott szám \(\displaystyle n\)-edik helyiértékén álló számjegyét \(\displaystyle n!\) értékével kell szorozni. Például a \(\displaystyle 235_{10}\) szám faktoriális számrendszerbeli alakja \(\displaystyle 14301_{!}\), azaz \(\displaystyle 1\cdot 1+3\cdot 6+4\cdot 24+1\cdot 120\). Amennyiben a faktoriális számrendszerben 9-esnél nagyobb számjegy fordul elő, akkor az ott szereplő számot zárójelbe tesszük. Például az \(\displaystyle 1(10)406010111_{!}\) szám második legmagasabb helyiértékű számjegye 10, és a szám tízes számrendszerben \(\displaystyle 77\,686\,689_{10}\).

Ebben a feladatban táblázatkezelő segítségével kell elkészítenünk az átváltást: egy faktoriális számrendszerben felírt egész szám tízes számrendszerbeli alakját kell megadni. A faktoriális számrendszerben felírt szám legföljebb 15 számjegyű, a nyitó és záró zárójelekkel együtt legföljebb 30 karakterből áll.

A megoldás során vegyük figyelembe a következőket:

\(\displaystyle \bullet\) Amennyiben lehetséges, és a feladat mást nem mond, akkor a megoldás során képletet, függvényt, hivatkozást használjunk.

\(\displaystyle \bullet\) A megoldáshoz segédszámításokat a K oszloptól jobbra végezhetünk.

\(\displaystyle \bullet\) A részfeladatok között van olyan, amely egy korábbi kérdés eredményét használja fel. Ha a korábbi részfeladatot nem sikerül teljesen megoldani, akkor használjuk a megoldását úgy, ahogy van, vagy helyettesítsük megfelelő értékkel, és azzal dolgozzunk tovább. Így ugyanis pontokat kaphatunk erre a részfeladatra is.

\(\displaystyle \bullet\) A megoldáshoz program vagy makró nem használható, kizárólag a  táblázatkezelő beépített függvényeivel dolgozzunk.

1. Alakítsuk ki a lenti mintának megfelelő táblázatszerkezetet és mentsük a táblázatot faktor10 néven a táblázatkezelő alapértelmezett formátumában.

2. Készítsük el az első és a negyedik sorban látott fejlécet, ahol szükséges egyesítsük a cellákat, illetve igazítsuk vízszintesen középre a cellák tartalmát.

3. Az A2 cellába írjunk be egy faktoriális számrendszerben megadott számot szövegként. A szám tízes számrendszerben adott alakja a C2-es cellában jelenjen meg.

4. Az A5:A34 tartományban adjuk meg az első 30 pozitív egész számot és a B5:B19 tartományban az első 15 egész szám faktoriálisát.

5. Az F5:F34 tartományban adjuk meg a B2 cellában található szöveg karaktereit egymás alatt úgy, hogy fentről lefelé a faktoriális számrendszerben adott szám karaktereit jobbról balra tudjuk kiolvasni. A szövegnél hosszabb karakterhelyeket jelölő cellákban 0 érték jelenjen meg.

6. A G5:G34 tartomány celláiban adjunk meg olyan képletet, amely megszámolja a faktoriális számban jobbról balra haladva az adott karakterhely előtt előforduló nyitó zárójeleket.

7. A H5:H34 tartomány celláiban adjunk meg olyan képletet, amely megszámolja a faktoriális számban jobbról balra haladva az adott karakterhely előtt előforduló záró zárójeleket.

8. Az I5:I34 tartomány celláiban határozzuk meg a faktoriális szám megfelelő számjegyét. A zárójeleket tartalmazó sorokban 0 értéket adjunk meg vagy hagyjuk üresen, a nyitó és záró zárójelek közötti sorokban állítsuk elő a többjegyű szám számjegyei alapján a többjegyű szám értékét, ami az utolsó zárójelen belüli szám sorában jelenjen meg.

9. A J5:J34 tartomány celláiban adjuk meg, hogy az előző oszlopban szereplő számjegy a kisebb helyiértékektől indulva hányadik számjegye a faktoriális számrendszerbeli számnak. Amennyiben az I oszlopban nem egy számjegy értéke van, akkor ott az előző sorban lévő számot adjuk meg. Egy szám a minta szerint többször is megjelenhet, de sorrendben az első szám adja meg, hogy az adott sorban az I oszlopban kapott érték hányadik számjegyét adja a faktoriális számrendszerbeli számnak.

10. A C5:C19 tartományban adjuk meg a J oszlopban meghatározott sorszám alapján a faktoriális számrendszerbeli szám megfelelő helyiértékén álló számjegyet tízes számrendszerben, vagy 0 értéket.

11. A D5:D19 tartományban adjuk meg a B és C oszlopban lévő megfelelő értékek szorzatát, vagy 0 értéket.

12. A C2 cellában adjuk meg a D5:D19 tartományban kiszámított számok összegét.

13. Formázzuk a táblázatot a mintának megfelelően.

Minta:

Beküldendő egy tömörített i566.zip állományban a megoldást tartalmazó munkafüzet és a megoldás rövid leírását bemutató dokumentáció.

(10 pont)

statisztika


I. 567. Vizsgáljuk meg két tömegpont mozgását, amelyek egy síkban mozognak, és mozgásukat csak a közöttük lévő tömegvonzás befolyásolja. A tömegvonzást a gravitációs erőtörvényből számítsuk. A két tömeg értéke, kezdeti helyzetük, valamint a kezdeti sebességük legyen a megoldásban paraméterként megadható. A két test egy síkban történő mozgásához a kezdeti sebességek is egy síkba esnek.

A megoldás során a folyamatot bontsuk kis \(\displaystyle \Delta t\) időintervallumokra, melyekben a test sebessége és gyorsulása állandó értéknek tekinthető. Minden időintervallum során számítsuk ki a testek közötti vonzerő alapján a testek gyorsulásának koordinátáit, majd ezek segítségével módosítsuk a testek sebességét, illetve a sebességet ismerve adjuk meg a test elmozdulását. Ezek alapján minden időintervallum eltelte után tegyük az elmozdulásnak megfelelő helyre a két testet úgy, hogy mozgásuk pályája látható legyen.

A feladat tetszőleges online grafikus rendszerben vagy szimulációs környezetben megoldható, illetve alkalmazói program készíthető a versenyben használható programozási nyelveken. A megoldás mutassa be a két tömegpont mozgását, tehát folyamatosan rajzolja ki a helyzetüket.

Beküldendők egy i567.zip tömörített állományban a megoldást tartalmazó forrásállományok vagy a források elérhetőségét mutató hivatkozás, illetve egy rövid dokumentáció, amely használati útmutatót ad a megoldáshoz, illetve szükség esetén tartalmazza a programozási nyelv grafikus kiegészítésének módját.

(10 pont)

megoldás, statisztika


I/S-jelű feladatok

A beküldési határidő 2022. június 15-én LEJÁRT.


I/S. 63. Adott egy \(\displaystyle N\) sorból és \(\displaystyle N\) oszlopból álló négyzetrács (tehát összesen \(\displaystyle N^{2}\) rácspontot tartalmaz). Egy egyenest rácsegyenesnek nevezünk, ha legalább két rácsponton áthalad. Adjuk meg, hogy \(\displaystyle N\) értékétől függően hány különböző rácsegyenes van.

A bemenet egyetlen sorában az \(\displaystyle N\) szám található.

A kimenet egyetlen sorában egy szám szerepeljen: a különböző rácsegyenesek száma.

Példák:

BemenetKimenet
2 6
3 20

Korlátok: \(\displaystyle 1 \le N \le 1000\). Időlimit: 0,4 mp.

Értékelés: a pontok 50%-a kapható olyan programra, amely megfelelő kimenetet ad, ha \(\displaystyle 1 \le N \le 50\).

(10 pont)

statisztika


S-jelű feladatok

A beküldési határidő 2022. június 15-én LEJÁRT.


S. 162. Jónásnak van egy \(\displaystyle N\) csúcsú teljes bináris fája. A fa gyökere az 1-es sorszámú csúcs. Ha az \(\displaystyle i\)-edik csúcs nem levél, akkor a két gyereke a \(\displaystyle 2i\) és \(\displaystyle 2i+1\) sorszámú csúcs. Minden csúcshoz hozzárendeltünk egy pozitív egész számot, ez a csúcs súlya. A súlyok között nincs két egyforma.

Jónás megpróbálta a fát maximum-kupaccá alakítani. Azt szeretné, hogy minden csúcs súlya nagyobb legyen, mint a két gyerekének a súlya. Ehhez a következő műveletet hajtotta végre \(\displaystyle Q\)-szor: kiválasztott egy csúcsot, majd megkereste, melyik a legnagyobb súly az összes alatta lévő csúcsban. Ezután a kiválasztott csúcs súlyát kicserélte a legnagyobb súllyal. Számítsuk ki, mennyire sikerült Jónás terve, azaz hány olyan szülő-gyerek pár van, amire teljesül a kupac feltétel.

Bemenet: az első sor tartalmazza a csúcsok \(\displaystyle N\) számát. A következő sorban a csúcsok súlya szerepel sorszám szerint növekvő sorrendben. A harmadik sorban a cserék \(\displaystyle Q\) száma szerepel. A negyedik sorban \(\displaystyle Q\) szám szerepel: a kiválasztott csúcsok sorszámai a kiválasztás sorrendjében.

Kimenet: a kimenet első és egyetlen sorába azon szülő-gyerek párok számát kell írni, melyben a szülő súlya nagyobb, mint a gyerek súlya.

Minta:

Magyarázat: a 3-as csúcs súlya 6, ezt a 7-essel cseréljük meg. A 2-es csúcs súlya 4, ezt a 9-essel cseréljük meg. Az 1-es csúcs súlya 1, ezt a 9-essel cseréljük. A csúcsok súlya ezután: 9, 1, 7, 4, 2, 3, 6.

Korlátok: \(\displaystyle 3 \le N = 2^k-1 < 10^5\). A csúcsok súlya legfeljebb \(\displaystyle 10^9\). Időlimit: 1 mp.

Értékelés: a pontok 50%-a kapható arra a programra, amely helyes kimenetet ad, ha \(\displaystyle N\cdot Q\le 10^6\).

Beküldendő egy s162.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)

statisztika


Figyelem!

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