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. februári 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. március 16-án LEJÁRT.


I. 556. Egy városnegyedbe \(\displaystyle N\) lakóházat terveztek, melyek mindegyikében egy-egy szinten azonos számú lakás van. A házakban a lakások értéke a szintek számával csökken. A lakásokat jellemezhetjük egy olyan \(\displaystyle P\) pontszámmal, ami azt mutatja meg, hogy hányadik szinten van a házban (például egy harmadik szinten lévő lakás pontszáma 3). A tervben szereplő házak magasságát városrendezési okokból csökkenteni kell összesen \(\displaystyle K\) darab szinttel. A csökkentés során előfordulhat, hogy a tervezettnél kevesebb számú lakóházat építenek a városnegyedbe.

Készítsünk programot i556 néven, amely a tervben szereplő házak \(\displaystyle K\) darab szinttel való csökkentését elvégzi úgy, hogy közben a tervben szereplő házak összértéke a legkisebb mértékben csökken.

A program standard bemenetének első sorában a lakóházak \(\displaystyle N\) (\(\displaystyle 2\le N\le 10\,000\)) száma és \(\displaystyle K\) (\(\displaystyle 2\le K\le 10\,000\)) értéke található, a következő \(\displaystyle N\) sorban pedig az, hogy egy-egy ház hány szintes (\(\displaystyle 2\le M_{i}\le 25\)). A program standard kimenetére az elérhető maximális pontszámot írjuk ki.

Bemenet (a / jel sortörést helyettesít) Kimenet
4 5 / 7 / 5 / 6 / 8 85

Magyarázat: az eredetileg 100 összpontszámmal rendelkező lakónegyedben az 5 szintes házat nem építjük meg, így a csökkentés után a pontszámok összege \(\displaystyle 28+21+36=85\).

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

(10 pont)

megoldás, statisztika


I. 557. (É). Egy kiskereskedelmi bolthálózat modernizálásba kezdett, önműködő kasszákat állítottak be a nagyobb boltjaikba. Nem túl sűrűn, de vak és gyengén látó vásárlók is megfordulnak a boltban. Nekik egy szövegfelolvasó programot készíttettek. A programnak egy ismert hiányossága van: a számjegyekkel szereplő számokat karakterenként olvassa fel, tehát az ,,1500 forint'' szöveget ,,Egy öt nulla nulla forint'' formában. Mennyivel érthetőbb lenne az ,,Ezerötszáz forint'' hangalakot hallani, de ehhez a számot szöveggé kell alakítani.

Táblázatkezelő program segítségével oldjuk meg az alábbi feladatokat.

1. Hozzuk létre a táblázatkezelőben a pénztár nevű állományt a program alapértelmezett formátumában, ebben legyen három munkalap alap, pénztár és nagy számok néven.

2. Tegyük lehetővé, hogy az alap munkalap A1 cellájába egy legfeljebb tizenöt számjegyből álló pozitív egész számot lehessen bevinni.

3. Amennyiben az A1 értéke a feltételeknek megfelelő, akkor az A3 cellában jelenjen meg a szám karakterenkénti szöveges változata. A számjegyek között pontosan egy szóköz legyen, de a szöveg végén ne legyen fölösleges szóköz. Például ha A1 tartalma 23\(\displaystyle \,\)710\(\displaystyle \,\)346, akkor A3-ban jelenjen meg a ,,kettő három hét egy nulla három négy hat'' szöveg.

4. Tegyük lehetővé, hogy a pénztár munkalap A1 cellájába az ,,összeg'' szót, a B1 cellába pedig egy legfeljebb kilenc számjegyből álló pozitív egész számot lehessen bevinni.

5. A munkalap D1, D3 és D5 cellájába rendre kerüljön a ,,Fizetési mód'', az ,,Euro árfolyam'' és a ,,Fizetendő:'' szöveg.

6. A D2 cella legyen legördíthető lista, az alábbi négy listaelemmel: ,, '' (üres szöveg), ,,Forint kártyával'', ,,Forint készpénzzel'', ,,Euro''.

7. Amennyiben B1 értéke a feltételeknek megfelelő, úgy a D6 cellában jelenjen meg a helyesírási szabályok szerint B1 értéke az alábbiak szerint:

\(\displaystyle a.\) Ha a D2 cella tartalma ,,Forint kártyával'', akkor a pontos összeg a pénznemmel megtoldva, például: 503\(\displaystyle \,\)118 esetén az ,,ötszázháromezer-száztizennyolc forint''.

\(\displaystyle b.\) Ha a D2 cella tartalma ,,Forint készpénzzel'', akkor az összeg ötösre kerekítve, hiszen a lekisebb értékű pénzérme az ötforintos, és a pénznemmel megtoldva, például: 503\(\displaystyle \,\)118 esetén az ,,ötszázháromezer-százhúsz forint''.

\(\displaystyle c.\) Ha a D2 cella tartalma ,,Euro'' és a D4 cellában szerepel az árfolyam, akkor az összeg átváltva eurora és centekre, például: 503\(\displaystyle \,\)118 és az euro árfolyam 360, akkor az ,,ezerháromszázkilencvenhét euro ötvenöt cent''.

\(\displaystyle d.\) A számok szövegé alakítása feleljen meg az alábbi nyelvtani szabályoknak: 2000-ig egybe kell írni a számot, fölötte balról hármasával csoportosítva kötőjellel.

szám leírás szám leírás
\(\displaystyle 110\) száztíz \(\displaystyle 1\,051\) ezerötvenegy
\(\displaystyle 315\) háromszáztizenöt \(\displaystyle 1\,895\) ezernyolcszázkilencvenöt
\(\displaystyle 503\) ötszázhárom \(\displaystyle 3\,420\) háromezer-négyszázhúsz
\(\displaystyle 824\) nyolcszázhuszonnégy \(\displaystyle 45\,000\,403\) negyvenötmillió-négyszázhárom

8. Tegyük lehetővé, hogy a nagy számok munkalap A1 cellájába egy legfeljebb tizenhat számjegyből álló pozitív egész számot lehessen bevinni.

9. Amennyiben az A1 értéke a feltételeknek megfelelő, az A3 cellában jelenjen meg az A1-be írt szám szöveges változata, pontosan úgy, mint a pénztár munkalapnál, csak nem kell a címlet megnevezése. Például, ha A1 tartalma 5\(\displaystyle \,\)742\(\displaystyle \,\)568\(\displaystyle \,\)741\(\displaystyle \,\)225, akkor A3-ban jelenjen meg a ,,ötbillió-hétszáznegyvenkettő­milliárd-ötszázhatvannyolcmillió-hétszáznegyvenegyezer-kétszázhuszonöt'' szöveg.

Minta az alap munkalaphoz

Minta a pénztár munkalaphoz

Minta a nagy számok munkalaphoz

Segédszámításokat mindhárom munkalapon a K oszloptól jobbra 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 i557.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.

(10 pont)

megoldás, statisztika


I. 558. A 2022. januári számban megjelent B. 5214. feladatban egy olyan 1-esekből és 0-kból álló számsorozatot kerestek, amely minden pozitív alapú számrendszerben értelmezve hárommal osztható számot jelent.

A feladat általánosításaként készítsünk programot, amely megvizsgálja a legföljebb 8 jegyű, csupa 0 és 1 jegyekből álló számokat egy adott \(\displaystyle R\) számrendszerben értelmezve, és megadja, hogy közülük hány osztható egy adott \(\displaystyle K\) számmal.

A program a standard bemenet első sorából olvassa be a számrendszer \(\displaystyle R\) alapszámát (\(\displaystyle 2\le R\le 1000\)), és a \(\displaystyle K\) (\(\displaystyle 2\le K\le 1000\)) osztót, majd adja meg, hogy hány olyan vizsgált szám van, amely a megadott számrendszerben értelmezve \(\displaystyle K\)-val osztható.

Bemenet Kimenet
29 7 8

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

(10 pont)

megoldás, statisztika


I/S-jelű feladatok

A beküldési határidő 2022. március 16-án LEJÁRT.


I/S. 60. Egy érdekes tény a virágokról, hogy szirmaik száma gyakran Fibonacci-szám. Egy nap találtunk \(\displaystyle N\) virágot a réten, az \(\displaystyle i\)-ediknek \(\displaystyle T[i]\) virágszirma van.

Adjuk meg azt a minimális sziromszámot, amennyit el kell távolítani a virágokról összesen, hogy mindegyiken Fibonacci-szám legyen a szirmok száma.

A bemenet első sorában az \(\displaystyle N\) szám található. A következő sor \(\displaystyle N\) számot tartalmaz, az \(\displaystyle i\)-edik szám \(\displaystyle T[i]\), az \(\displaystyle i\)-edik virág sziromszáma. A kimenet egyetlen sorában egy szám szerepeljen, hogy minimálisan mennyi szirmot kell eltávolítani az \(\displaystyle N\) virágról összesen, hogy a fentieknek megfeleljen.

Magyarázat: távolítsunk el az 1. virágról egy szirmot, a 2. virágról két szirmot és a 4. virágról három szirmot, tehát összesen hatot.

Korlátok: \(\displaystyle 1 \le N \le 10\,000\), \(\displaystyle 1 \le T[i] \le 10^{9}\). Időlimit: 0,4 mp.

Értékelés: a pontok 50%-a kapható, ha \(\displaystyle 1 \le N \le 10\)0 és \(\displaystyle 1 \le T[i] \le 100\) esetén helyesen működik a program.

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


S-jelű feladatok

A beküldési határidő 2022. március 16-án LEJÁRT.


S. 159. Egy kalandjáték \(\displaystyle N\times M\) téglalap alakú területből áll. Minden területen egy próba található, melynek nehézsége pozitív egész szám. Van egy hősünk, aki kezdetben a bal felső sarokban áll és egyes szintű. A hős akkor léphet rá egy, a jelenlegi helyével oldalszomszédos területre, ha a szintje legalább akkora, mint az ott található próba nehézsége. A területen található próba teljesítése után a hős szintje eggyel nagyobb lesz.

A hős tetszőlegesen lépkedhet a tábla már meglátogatott (teljesített) mezőin, de csak egyszer – az első rálépéskor – emelkedik a szintje. Teljesíteni tudja-e a hős a játékot, azaz el tud-e jutni a jobb alsó területre?

Bemenet: az első sor tartalmazza a sorok \(\displaystyle N\) és az oszlopok \(\displaystyle M\) számát. A következő \(\displaystyle N\) sor mindegyike \(\displaystyle M\) számot tartalmaz, az adott területen lévő próba nehézségét. A bal felső sarokban nincs próba, így az az érték mindig 0.

Kimenet: az első sorban az ,,IGEN'' szó szerepeljen, ha a játék teljesíthető, és a ,,NEM'' szó különben. Ha a játék teljesíthető, adjuk meg a legkisebb szintet, amivel teljesíteni lehet. Ha az első sor ,,NEM'' volt, adjuk meg a szabályos lépésekkel elérhető legnagyobb szintet.

Bemenet (a / jel sortörést helyettesít) Kimenet (a / jel sortörést helyettesít)
3 3 / 0 1 2 / 3 5 6 / 4 4 2 IGEN / 7

Magyarázat: az 5-ös és 6-os próbák kivételével mindet teljesíteni kell. Ezek után a hős 7-es szintű lesz.

Korlátok: \(\displaystyle 2\le N, M \le 100\), egy próba nehézsége legfeljebb \(\displaystyle 20\,000\). Időlimit: 0,5 mp.

Értékelés: a pontok 50%-a kapható, ha a kimenet első sora helyes.

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