A KöMaL 2020. szeptemberi 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ű feladatokA beküldési határidő 2020. október 15-én LEJÁRT. |
I. 514. A helyiértékes számrendszerekben a számok számjegyeit a számrendszer alapszámának megfelelő hatványával szorozzuk, hogy megkapjuk a szám értékét. Például a 143 esetében \(\displaystyle 1\cdot {10}^{2}+4\cdot {10}^{1}+3\cdot {10}^{0}\), azaz \(\displaystyle 100+40+3\) a szám értéke. A negatív számokat egy előjellel jelöljük, de a felírás itt is ugyanúgy történik. Ha azonban alapszámnak egy negatív számot választunk, akkor nem lesz szükségünk előjelre. Legyen a számrendszer alapszáma \(\displaystyle -10\). Ekkor a \(\displaystyle -10\) alapú számrendszerben felírt szám számjegyeit \(\displaystyle -10\) hatványaival szorozzuk, tehát a \(\displaystyle {345}_{-10}\) szám értéke \(\displaystyle 3\cdot {(-10)}^{2}+4\cdot {(-10)}^{1}+5\cdot {(-10)}^{0}\), vagyis 265. Könnyen belátható, hogy a \(\displaystyle -10\) alapú számrendszerben is egyértelmű a számok felírása, de nincs szükség a negatív számok esetében az előjelre. Például \(\displaystyle -25=-30+5\), tehát \(\displaystyle -10\) alapú számrendszerben \(\displaystyle 35_{-10}\).
Készítsünk programot, amely \(\displaystyle N\) darab 10-es számrendszerben megadott számot átvált \(\displaystyle -10\)-es számrendszerbe. A program a standard bemenet első sorából olvassa be az átváltandó számok darabszámát (\(\displaystyle 1\le N\le 100\)), majd a következő \(\displaystyle N\) sorból az átváltandó \(\displaystyle A\) számokat (\(\displaystyle |A|\le {10}^{9}\)), és írja a standard kimenet \(\displaystyle N\) darab sorába a számok felírását \(\displaystyle -10\) alapú számrendszerben.
Példa:
Beküldendő egy tömörített i514.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. 515. A bűvös négyzetek \(\displaystyle N\times N\) egész számot tartalmaznak négyzetes elrendezésben. Minden szám egyedi, nem ismétlődik, és bármely sorban, oszlopban, valamint az átlókban szereplő számok összege ugyanaz az érték.
A bűvös négyzetek régóta ismertek. Egy híres bűvös négyzetet látunk Albrecht Dürer (1471–1528) magyar származású német festő és grafikus Melankólia című metszetének jobb felső sarkában. A négyzet alsó sorában középen szereplő két érték összeolvasva 1514, amely a kép keletkezésének éve.
Kaptunk egy \(\displaystyle 4\times 4\)-es bűvös négyzetet, amely elképzelhető, hogy hibás. Ismerjük a minta készítőjét, aki néha felcserél oszlopokat, alkalmanként felcserél sorokat, de előfordul, hogy egy számot eltéveszt.
A számokat rögzítettük a durer.txt tabulátorral tagolt, UTF 8 kódolású állományban. Értékeljük ki a bűvös négyzetet táblázatkezelő segítségével az alábbiak szerint:
– Adjuk meg, hogy a bűvös négyzet helyesen van-e kitöltve.
– Ha számtévesztés történt, akkor adjuk meg a cellahivatkozást, ahol a hibás szám van és írjuk ki mellé a helyes értéket. A hibás cella hátterét feltételes formázással színezzük ki.
– Ha a számok helyesek soronként és oszloponként, de fel vannak cserélve, akkor írjuk ki, hogy az átlók tévesek.
Minta:
Beküldendő egy i505.zip tömörített állományban a munkafüzet, valamint egy rövid dokumentáció, amelyből kiderül az alkalmazott táblázatkezelő neve és verziószáma.
Letölhető állomány: durer.txt.
(10 pont)
I. 516. (É). Mari néni és Bözsi néni is fogyni szeretne. A nagyobb motiváció érdekében figyelemmel kísérik egymás testsúlyának alakulását. Az adatokat minden hétfőn rögzítik a fogyi.txt állományba. A fájl sorai rendre Mari néni majd Bözsi néni tömegét tartalmazzák kg-ban egészre kerekítve az egymást követő heteken egy szóközzel elválasztva. A fájl legfeljebb egy év (53 hét) adatait tartalmazza.
87 85
86 88
A példában a második héten Mari néni 86 kg, Bözsi néni pedig 88 kg volt. Készítsünk fogyokura néven programot az alábbiak szerint. Minden esetben írassuk ki a feladat számát is.
1. Olvassuk be és tároljuk el az adatokat.
2. Kérjük be egy hét sorszámát, majd írassuk ki, hogy ezen a hétfőn hány kilogramm volt a két hölgy.
3. Írjuk ki a képernyőre, hogy hány olyan hét volt, amikor Mari néni tömege meghaladta Bözsi néniét.
4. Számítsuk ki, hogy mennyi volt a mérés ideje alatt Bözsi néni átlagos tömege. Az eredményt két tizedesjegy pontossággal írassuk ki a képernyőre.
5. Vizsgáljuk meg, hogy melyik héten volt Mari néni tömege a legnagyobb. Ha több ilyen hét is volt, akkor mindegyiket írassuk ki a képernyőre.
6. Keressük meg, hogy mikor csökkent az előző héthez képest az egyik, illetve a másik hölgy tömege. Az eredményt egy-egy szóközzel elválasztva a következő formában írassuk ki a csokken.txt nevű szöveges állományba:
Például Mari néni súlya a 12. hétről a 13. hétre csökkent, majd a 13. hétről a 14. hétre is stb.
7. Írjuk egy táblázatban a képernyőre, hogy adott tömegeket mely heteken mért Mari néni. Például:
A táblázatban csak azok a tömegek szerepeljenek, amelyeket ténylegesen el is ért Mari néni.
Beküldendő egy tömörített i516.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ó.
Letölthető állomány: fogyi.txt.
(10 pont)
I/S-jelű feladatokA beküldési határidő 2020. október 15-én LEJÁRT. |
I/S. 46. A 2020-as kanizsai CEOI versenyen \(\displaystyle N\) versenyzőnek kellett 6 feladatot megoldania. Mindegyik versenyzőről tudjuk, hogy melyik feladatra hány pontot szerzett. Adjuk meg a legkisebb különbséget, ami két versenyző összesített pontszáma közt előfordult.
Bemenet: az első sor tartalmazza az \(\displaystyle N\) számot. A következő \(\displaystyle N\) sor mindegyike 6 számot tartalmaz: az \(\displaystyle i\)-edik sor az \(\displaystyle i\)-edik versenyző kapott pontszámait tartalmazza sorrendben a hat feladatra.
Kimenet: az egyetlen sorban szerepel a keresett legkisebb különbség.
Példa:
Korlátok: \(\displaystyle 2\le N\le {10}^{5}\). Minden pontszám 0 és 100 közti. Időkorlát: 0,2 mp.
Értékelés: a pontok 50%-a kapható, ha \(\displaystyle N\le 100\).
Beküldendő egy is45.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ű feladatokA beküldési határidő 2020. október 15-én LEJÁRT. |
S. 145. Van egy szótárunk \(\displaystyle N\) db szóval. Azt szeretnénk tudni, hányféleképpen tudjuk a szótárból választott szavakat a dominóhoz hasonlóan összeilleszteni úgy, hogy azok \(\displaystyle K\) betű hosszan átfedjék egymást. Tehát a kérdés: hány olyan \(\displaystyle (i,j)\) rendezett számpár (\(\displaystyle 1\le i,j\le N\)) van, melyre az \(\displaystyle i\)-edik szó utolsó \(\displaystyle K\) betűjéből alkotott sorozat megegyezik a \(\displaystyle j\)-edik szó első \(\displaystyle K\) betűjéből alkotott sorozattal.
Bemenet: az első sor tartalmazza az \(\displaystyle N\) és \(\displaystyle K\) számokat. A következő \(\displaystyle N\) sor mindegyike egy, az angol ABC kisbetűiből álló (nem feltétlenül értelmes) szót tartalmaz.
Kimenet: a megfelelő összeillesztések, vagyis számpárok száma.
Példa:
Korlátok: \(\displaystyle 2\le N\le {10}^{5}\), \(\displaystyle 1\le K\le 100\), minden szó legalább \(\displaystyle K\) és legfeljebb 100 betű hosszú. Időkorlát: 1 mp.
Értékelés: a pontok 30%-a kapható \(\displaystyle K=1\) esetén. A pontok további 30%-a kapható, ha \(\displaystyle N\le 100\).
Beküldendő egy s145.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.