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 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ű feladatok

A 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ű feladatok

A 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ű feladatok

A 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.