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 2025. októberi 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ő 2025. november 17-én LEJÁRT.


I. 671. Figyelem! A nyomtatott lapban hibásan I. 672. sorszámmal jelent meg ez a feladat!

Egy téglalap alakú terepasztalon egy robotjárművel kísérleteznek a diákok. A terepasztal \(\displaystyle N\times M\)-es négyzetrácsra van felosztva, ahol minden rácspont magasságát ismerjük. A robot az asztal első sorából, tetszőleges rácspontból indulhat, de csak lefelé, valamint balról jobbra léphet egységnyit. A robot szerény képességű, legfeljebb \(\displaystyle 1\) egységnyi szintkülönbségű szomszédos rácspontra tud lépni.

Készítsünk programot i671 néven, amely megadja a robotjármű lehető leghosszabb útját.

A program standard bemenetének első sorában az asztal oldalainak hossza (\(\displaystyle {1\leq N, M\leq 100}\)) van. A következő \(\displaystyle N\) sorban lévő \(\displaystyle M\) szám a rácspontok \(\displaystyle H_{i,j}\) magasságát jelenti (\(\displaystyle 1\leq H_{i,j}\leq 100\)).

A programmal a standard kimenetre írjuk ki az első sorba a leghosszabb út hosszát, a második sorba az út kezdő (sor, oszlop) és befejező (sor, oszlop) pozícióját. Több azonos hosszúságú út esetén elegendő egyet megadni.

Beküldendő egy tömörített i671.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)


I. 672. Figyelem! A nyomtatott lapban hibásan I. 673. sorszámmal jelent meg ez a feladat!

Ebben a feladatban a hazai mezőgazdasági terület adatait vizsgáljuk 1950 és 2019 között.

  1. Nyissunk egy üres táblázatkezelő munkafüzetet. Töltsük be egy üres munkalapra az A1-es cellától kezdve az UTF-8 kódolású, tabulátorokkal tagolt mg1950-2019.txt fájl tartalmát. A munkalap kapja az mgadatok nevet. Munkánkat mentsük mgter néven a táblázatkezelő alapértelmezett formátumában.
  2. Formázzuk meg az adatokat tartalmazó cellákat a minta és a leírás szerint.
    1. Egyesítsük az A1:G1 tartomány celláit;
    2. szegélyezzük a munkalap adatokat vagy képleteket tartalmazó celláit;
    3. a munkalap celláiban a betűtípus legyen Arial, a betűméret 11 pont;
    4. az első sor betűi legyenek félkövér betűstílusúak;
    5. a második sor legyen kb. dupla magasságú az alapértelmezetthez képest, a betűstílus legyen félkövér, a cellák függőlegesen és vízszintesen középre igazítottak a minta szerint;
    6. az A:G tartomány oszlopainak szélessége legyen azonos.

  3. Számítsuk ki a G3:G72 tartomány celláiban a mezőgazdasági területet.
  4. Hozzuk létre a valaszok nevű munkalapot. Készítsük el a minta szerint az alábbi táblázatot.
  5. Számítsuk ki a 2. sor sárga cellájában az első kérdés válaszát.
  6. Számítsuk ki a 4. sor sárga celláiban a második kérdés válaszait.
  7. Számítsuk ki a 6. sor sárga celláiban a harmadik kérdés válaszait.
  8. Számítsuk ki a 8. sor sárga cellájában a negyedik kérdés válaszát.
  9. Számítsuk ki a 10. sor sárga cellájában az ötödik kérdés „Igen” vagy „Nem” válaszát.

Segédszámításokat az mgadatok munkalapon a G oszloptól jobbra, illetve a 71. sortól lefelé végezhetünk. A megoldásban saját függvény vagy makró nem használható.

Beküldendő egy tömörített i672.zip állományban a táblázatkezelő munkafüzet, illetve egy rövid dokumentáció, amelyben szerepel a megoldáskor alkalmazott táblázatkezelő neve, verziószáma.

Az adatok forrása: https://www.ksh.hu/stadat_files/mez/hu/mez0008.html

Letölthető fájl: mg1950-2019.txt

(10 pont)


I. 673. Figyelem! A nyomtatott lapban hibásan I. 674. sorszámmal jelent meg ez a feladat!

Ez a feladat az előző tanévben elkezdett prímekkel kapcsolatos sorozat (I. 633., I. 641. és I. 661.) negyedik része.

Additív prímeknek nevezzük az olyan prímszámok, amelyek számjegyei összege is prím. Például az \(\displaystyle 541\,579\) additív prím, hiszen prím, és számjegyeinek összege 31, ami szintén prím.

Bölcsföldi–Dömötör-prímek a (tízes számrendszerben) azon prímszámok, amelyek minden számjegye prím (\(\displaystyle 2\), \(\displaystyle 3\), \(\displaystyle 5\) vagy \(\displaystyle 7\)), a számjegyek száma és összege is prím. Például a \(\displaystyle 33\,223\) prímszám, számjegyeinek száma 5 és összegük 13.

Szimmetrikus prímeknek (a tízes számrendszerben) azokat a prímszámokat nevezzük, amelyek minden számjegye prím, számjegyeinek száma és számjegyeinek összege is prím, továbbá a szám középpontosan szimmetrikus a középső számjegyre. Például a \(\displaystyle 35\,753\) prím, minden számjegye prím, számjegyeinek száma 5, azok összege 23, ezek is prímek és középpontosan szimmetrikus a középső számjegyre.

Háromrészes prímek a (tízes számrendszerben) azok a prímszámok, amelyeknél a számjegyek száma \(\displaystyle 3k\), ahol \(\displaystyle k\geq 1\) egész, és három egyenlő hosszú részre osztva a számot, mindegyik rész is prím. Például a \(\displaystyle 295\,319\) prímszám háromrészes prím, hiszen hatjegyű és részei: 29, 53 és 19 is prímek.

Négyrészes prímek a (tízes számrendszerben) azok a prímszámok, amelyeknél a számjegyek száma \(\displaystyle 4k\), ahol \(\displaystyle k\geq 1\) egész, és négy egyenlő hosszú részre osztva a számot, mindegyik rész is prím. Például a 2557 prímszám négyrészes prím, hiszen négyjegyű, és részei: 2, 5, 5 és 7 is prímek.

  1. Készítsünk egy táblázatkezelő munkafüzetben primek néven munkalapot és munkánkat mentsük primek_megint néven a táblázatkezelő program alapértelmezett formátumában.
  2. Illesszük be az A3 cellától az \(\displaystyle 1\,000\,000\)-nál nem nagyobb prímek listáját a primek1000000ig.txt fájlból. Az első két sorba oszlopfeliratokat készíthetünk a számításokhoz.
  3. Válogassuk ki az öt prímcsoport \(\displaystyle 1\,000\,000\) alatti prímek közé eső tagjait. A számításokat ezen a munkalapon végezzük.
  4. Hozzunk létre egy eredmények nevű munkalapot, amelynek A oszlopát töltsük fel 1-től egész számokkal addig, amennyi a speciális prímszámok darabszámának maximuma. A következő oszlopokban határozzuk meg, minden prímszámtípusnál helykihagyás nélkül, növekvő sorrendben:
    1. B oszlopban az additív prímeket.
    2. C oszlopban a Bölcsföldi–Dömötör-prímeket.
    3. D oszlopban a szimmetrikus prímeket.
    4. Az E oszlopban a talált háromrészes prímeket.
    5. Végezetül az F oszlopba pedig a négyrészes prímek kerüljenek.
  5. A munkalap adattartományát formázzuk a minta szerint!
  6. Készítsük el az eredmények munkalapon az adott helyre a mintán látható táblázatot.
  7. Számítsuk ki és jelenítsük meg a hiányzó adatokat.
  8. Mindkét munkalapon cseréljük le oszloponként az első 99 sor utáni képleteket az értékükre.

Segédszámításokat a primek munkalapon végezhetünk. A megoldásban saját függvény vagy makró nem használható.

Beküldendő az i673.zip tömörtett állományban a munkafüzet az eredeti nevén xlsb formátumban (bináris munkafüzetként) és egy rövid dokumentáció, amelyben szerepel a kiválogatások módszere, a táblázatkezelő neve, verziószáma.

Letölthető fájl: primek1000000ig.txt

(10 pont)


I. 674. Figyelem! A nyomtatott lapban hibásan I. 675. sorszámmal jelent meg ez a feladat!

Egy falrészlet azonos méretű, de különböző tömegű téglákból épült fel az alábbi ábrának megfelelően. Az alsó sorban lévő téglák a földön fekszenek szorosan egymás mellett. A fölöttük lévő téglák az alatta lévő téglákon fekszenek, azokhoz képest egyharmad téglaszélességgel elcsúsztatva jobbra.

A téglákon lévő számok az adott tégla tömegét mutatják. A legalsó sorban \(\displaystyle N\) darab tégla fekszik, a többi sor mindegyikében eggyel kevesebb, mint az alatta lévőben. Összesen \(\displaystyle K\) sorból áll a falrészlet. A fenti ábra esetén \(\displaystyle N=4\) és \(\displaystyle K=3\).

A téglák közül bármelyik kiemelhető és áthelyezhető, de három szabályt be kell tartani:

  1. kiemeléskor az üresen maradt hely miatt a falrészlet nem omolhat le, tehát egyetlen másik tégla sem eshet vagy billenhet le;
  2. áthelyezés után is egy egybefüggő falrészlet kell létrejöjjön, tehát a téglák továbbra is egymáshoz illeszkednek (a kiemelt tégla helyét leszámítva), a korábbi egyharmad téglaszélességgel elcsúsztatva;
  3. az áthelyezett téglát olyan módon kell elhelyezni, hogy az biztosan feküdjön vagy a földön, vagy az alatta lévő sor tégláján úgy, hogy ne billenjen le.

A fenti ábrán a felső sor bármelyik téglája kivehető és áthelyezhető például a többi sor jobb oldali végére vagy a felső sor fölé egy új sorként, ahol nem billen el. Hasonló módon kiemelhető minden sor utolsó téglája.

Az építész szeretné átrendezni a téglákat úgy, hogy ne forduljon elő, hogy nehezebb tégla fekszik egy vagy két másik, könnyebb téglán. Ehhez a fenti szabályok szerint áthelyezhet téglákat, de a végén vissza szeretné kapni a téglák eredeti elrendezését az eredeti helyen.

Készítsünk programot i674 néven, amely javaslatot tesz a téglák szabályok szerinti áthelyezésére, hogy azok az építész kívánságának megfelelően helyezkedjenek el. Több megoldás lehetséges, elég egyet megadni, de törekedjünk a kevesebb áthelyezéssel járó megoldásra. A megoldások értékelése során az áthelyezések számát is figyelembe vesszük.

A program standard bemenetének első sorában az alsó sorban lévő téglák \(\displaystyle N\) száma (\(\displaystyle 3\leq N\leq 10\)) és a falrészlet magasságának \(\displaystyle K\) száma (\(\displaystyle 3\leq K\leq N\)) szerepel. A következő sorban egy-egy kettőskereszt `#' jellel elválasztva a falrészlet soraiban lévő téglák tömege szerepel. A téglák számai és a `#' jelek között egy szóköz az elválasztó.

A program a standard kimenet első sorába írja ki az áthelyezések \(\displaystyle Z\) számát, majd a következő sorokban az egyes áthelyezések utáni állapotát a falrészletnek. A \(\displaystyle Z\) számú sorba a bemenethez hasonlóan írjuk ki a falrészlet soraiban lévő téglák tömegét. A fal sorait `#' jellel válasszuk el, a `#' jel valamint a számok között egy-egy szóköz legyen, a bemenethez hasonlóan. Amennyiben a sor valamely részén üres hely van, azt a nulla számmal jelezzük.

Példa:

A példához tartozó ábra nem teljes, csak az első 7 áthelyezés utáni állapotot tartalmazza. A következő lépésben áthelyezendő téglát minden esetben szürkével jelöltük.

Beküldendő egy tömörített i674.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)


Figyelem!

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