Informatika feladatmegoldó verseny. Kiss Elemér Szakkollégium február 19. Dr. Kovács Lehel István

Hasonló dokumentumok
INFORMATIKA tétel 2019

Permutáció n = 3 esetében: Eredmény: permutációk száma: P n = n! romámul: permutări, angolul: permutation

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Országos Középiskolai Tanulmányi Verseny, 2004/2005-ös tanév INFORMATIKA, II. (programozói) kategória második fordulójának javítási útmutatója

INFORMATIKA tétel 2018

GEOMATECH TANULMÁNYI VERSENYEK ÁPRILIS

Algoritmizálás + kódolás C++ nyelven és Pascalban

A 2010/2011 tanévi Országos Középiskolai Tanulmányi Verseny döntő fordulójának megoldása. II. (programozás) kategória

Amortizációs költségelemzés

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

Programozás C nyelven (13. ELŐADÁS) Sapientia EMTE

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont)

Írjon olyan programot a standard könyvtár alkalmazásával, amely konzolról megadott valós adatokból meghatározza és kiírja a minimális értékűt!

1. beadandó feladat: egyszerű grafikus felületű alkalmazás. Közös követelmények:

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Programozás II gyakorlat. 4. Öröklődés

Körkörös listák. fej. utolsó. utolsó. fej

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

1. feladat Készítse el szövegszerkesztővel, majd mentse osztály.txt néven a következő tartalmú szöveges fájlt:

Kirakós játék. Döntő február 22. Alakzatok (katalógus) DUSZA ÁRPÁD ORSZÁGOS PROGRAMOZÓI EMLÉKVERSENY 2013/2014

/* Az iter függvény meghívása és a visszatérő érték átadása a gyok változóba */ gyok = iter( n, a, e ) ;

Programozás I gyakorlat. 5. Struktúrák

A 2010/2011 tanévi Országos Középiskolai Tanulmányi Verseny második fordulójának megoldása. II. (programozás) kategória

Maximum kiválasztás tömbben

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Szerző Lővei Péter LOPSAAI.ELTE IP-08PAEG/25 Daiki Tennó

OKTV 2007/2008 Informatika II. kategória döntő forduló Feladatlap. Oktatási Hivatal

Alapműveletek mátrixokkal

BASH script programozás II. Vezérlési szerkezetek

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

Programozási módszertan. Dinamikus programozás: Nyomtatási feladat A leghosszabb közös részsorozat

O k t a t á si Hivatal

Géptermi zh-írás forgatókönyve

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

A 2014/2015 tanévi Országos Középiskolai Tanulmányi Verseny második forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

hiányzott szeptemberben vagy A tanuló nem hiányzott szeptemberben szöveget

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

A lista eleme. mutató rész. adat rész. Listaelem létrehozása. Node Deklarálás. Létrehozás. Az elemet nekünk kell bef zni a listába

INFORMATIKA javítókulcs 2016

STL. Algoritmus. Iterátor. Tároló. Elsődleges komponensek: Tárolók Algoritmusok Bejárók

Bevezetés a programozásba. 11. Előadás: Esettanulmány

félstatikus adatszerkezetek: verem, várakozási sor, hasítótábla dinamikus adatszerkezetek: lineáris lista, fa, hálózat

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny döntő forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Programozás II gyakorlat. 8. Operátor túlterhelés

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

Programozás alapjai 9.Gy: Struktúra 2.

2018, Funkcionális programozás

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

1. Alapok. #!/bin/bash

Gráfelméleti feladatok. c f

2018, Diszkrét matematika

1. Alapok. Programozás II

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

Osztály és objektum fogalma

A 2013/2014 tanévi Országos Középiskolai Tanulmányi Verseny második forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Torna. A torna.csv UTF-8 kódolású állományban soronként egy versenyző eredményeit tároljuk. Az adatokat pontosvessző választja el egymástól.

Adatszerkezetek és algoritmusok

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

Programozás I. Grafika Eseménykezelés. Programozás I. 2. gyakorlat Interakció a grafikus felületen, tagfüggvények. Surányi Márton PPKE-ITK

Programozás C nyelven (10a. ELŐADÁS) Sapientia EMTE

Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y.

Delphi programozás I.

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Országzászlók (2015. május 27., Sz14)

2015, Diszkrét matematika

Alprogramok, paraméterátadás

Bevezetés a programozásba I.

A 2013/2014 tanévi Országos Középiskolai Tanulmányi Verseny döntő forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Bevezetés a C++ programozásba

Programozási alapismeretek 2009/2010

44. ORSZÁGOS TIT KALMÁR LÁSZLÓ MATEMATIKAVERSENY. Megyei forduló április mal, így a számjegyeinek összege is osztható 3-mal.

Programozás II gyakorlat. 6. Polimorfizmus

Programozás alapjai C nyelv 9. gyakorlat. Rekurzió. Rekurzív algoritmus

Időjárási csúcsok. Bemenet. Kimenet. Példa. Korlátok. Nemes Tihamér Nemzetközi Informatikai Tanulmányi Verseny, 2-3. korcsoport

I. Egydimenziós tömb elemeinek rendezése

Bevezetés a programozásba. 12. Előadás: 8 királynő

4. Öröklődés. Programozás II

2. Visszalépéses keresés

Programozás II. 4. Dr. Iványi Péter

Programozás alapjai II. (1. ea) C++

Programozás alapjai II. (1. ea) C++

MestInt gyakorlat visszalépéses keresés

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

1. beadandó feladat: egyszerű grafikus felületű alkalmazás. Közös követelmények:

OKTV 2005/2006 döntő forduló

Bevezetés Kiíratás Beolvasás Formázás Fájlkezelés Gyakorló feladatok C++ I/O. Bevezetés. Izsó Tamás február 20. Izsó Tamás C++ I/O / 1

Országos Középiskolai Tanulmányi Verseny 2006/2007-os tanév INFORMATIKA, II. (programozás) kategória második fordulójának feladatai

1. numere.txt n (1 n 10000) n növekvő kilenc a) Pascal/C++ Például: NUMERE.TXT

Érdekes informatika feladatok

Informatika terméktervezőknek

1. Írjunk programot mely beolvas két számot és ellenőrzi hogy mindkét szám zérus-e:

Minimum feladat: Teljes feladat: Minimum feladat: Teljes feladat: Minimum feladat:

INFORMATIKAI ALAPISMERETEK

Felvételi tematika INFORMATIKA

Átírás:

Informatika feladatmegoldó verseny Kiss Elemér Szakkollégium 2013. február 19. Dr. Kovács Lehel István

Állás

Összesítő

Új feladat 5. forduló

4. Feladat A prímszámok generálása ősi matematikai feladat. Írjunk minél gyorsabb algoritmust, amely 350 000 000-ig legenerálja a prímszámokat!

Be / Ki BE: 350 000 000 KI: Állomány prímszámokkal Generálási idő

Határidő 2013. március 17. 24 óra Beküldeni (név, szak, évfolyam, kód): klehel77@yahoo.com

Megoldások

Feladatok 1. feladat Gyors darabolás 2. feladat Szomszédok 3. feladat Huszárok

I.

1. feladat Adjunk minél gyorsabb algoritmust (C, C++ programot) a következő feladat megoldására: Az nyer, akinek a programja a leggyorsabb (mérjük a futási időt)!

Feladat Adott egy A hosszúságú rúd. Hányféleképpen vághatjuk fel A 1, A 2,..., A n hosszúságú darabokra a rudat, úgy hogy mindegyik darabból legfennebb egyet használunk.

Példa A = 33 A 1 = 1 A 2 = 4 A 3 = 7 A 4 = 8 A 5 = 9 A 6 = 10 A 7 = 14 A 8 = 15 A 9 = 18

Megoldás Backtracking Valami jobb...

A matematikai modell SDE Speciális Diofantoszi Egyenlet: a 1 x 1 + a 2 x 2 + + a n x n = a ahol: x i {0, 1}

Az egyenlet megoldása Aritmetikai módszer Geometriai módszer Algoritmus Backtracking Linearizálás Maszkolással

Backtracking procedure back(i: integer; len: integer; eq: TIntArray; var bin: TIntArray; res: integer; var sol: TSolution; var solnr: integer); begin if i = len-1 then begin if Sum(len, eq, bin) = res then Solution(len, bin, sol, solnr) end else begin bin[i+1] := 0; back(i+1, len, eq, bin, res, sol, solnr); bin[i+1] := 1; back(i+1, len, eq, bin, res, sol, solnr); end; end;

Linearizálás n a feladat rendje n-hosszúságú bináris regiszter: 0 0 0 0 0 0 0 1 2 3 4 n 1 1 1 1 1 1 1 0 1 2 3 4 n 1

Maszkolás Ugyanaz, csak egy regiszterben megvalósítható eltolás <<, >> operátorok segítségével.

II.

2. feladat Adott n és m, valamint k (1<=k<=8). A következő elvek betartásával rendezzük be egy nxm-es mátrixba a 2, 4, 8, 16,..., 2 k számokat úgy, hogy a mátrix elemeinek összege maximális legyen: - a 2-ot bárhova beírhatjuk - a 4-nek kell hogy legyen legalább egy 2-es szomszédja - a 8-nak kell hogy legyen legalább egy 2-es és egy 4-es szomszédja - a 16-nak kell hogy legyen legalább egy 2-es, egy 4-es, egy 8-as szomszédja -... - 2 k -nak kell hogy legyen legalább egy 2-es, egy 4-es, egy 8-as,..., egy 2 k-1 -es szomszédja

Be / Ki Be: n m k Ki: mátrix összeg

Szomszéd X X X X o X X X X

Például n = 3 m = 3 8 4 8 k = 3 8 2 8 8 4 8

III.

3.1. Feladat Egy 8 8-as sakktáblára elhelyezünk egy huszárt. A huszár lóugrásban lép, azaz vagy vízszintes irányban lép egyet és függőlegesen kettőt, vagy pedig fordítva. Készíts programot, amely egy adott pozícióra elhelyezett huszár esetén megadja, hogy a huszár mely pozíciókra minimum hány lépésben juthat el! (Forrás: NEMES TIHAMÉR SZÁMÍTÁSTECHNIKA VERSENY 2009)

Be / Ki A BE.IN szöveges állomány első sorában a tesztesetek száma található, majd mindegyik teszteset egyetlen sorában a huszár sorindexe (1 SOR 8) és oszlopindexe (1 OSZLOP 8) van, egy szóközzel elválasztva. A képernyőre mindegyik tesztesetre 8 sort kell írni, mindegyikben 8 szám legyen egy-egy szóközzel elválasztva! Az i-edik sor j-edik oszlopában az a lépésszám legyen, ahány lépésben az adott mező elérhető a kiinduló mezőről! A teszteseteket egy üres sorral kell elválasztani.

Példa Be: 1 3 2 Ki: 1 2 1 4 3 2 3 4 2 3 2 1 2 3 4 3 3 0 3 2 3 2 3 4 2 3 2 1 2 3 4 3 1 2 1 4 3 2 3 4 2 3 2 3 2 3 4 3 3 2 3 2 3 4 3 4 4 3 4 3 4 3 4 5

Adatok #include <cstdio> #include <cstring> #include <queue> using namespace std; struct node { int x; int y; node(int xx, int yy){x = xx; y = yy;}; }; int hx, hy; int cache[10][10]; int inq[10][10]; const int dx[] = { 2, 2, 1, 1, -2, -2, -1, -1}; const int dy[] = { 1, -1, 2, -2, 1, -1, 2, -2};

Főprogram int main() { freopen("sakk.be","r",stdin); freopen("sakk.ki","w",stdout); memset(cache, -1, sizeof(cache)); memset(inq, 0, sizeof(inq)); read(); solve(hx, hy); print(); return 0; }

read void read() { scanf("%d%d", &hx, &hy); } inline int good(int x, int y) { if (x > 0 && x < 9 && y > 0 && y < 9) return 1; return 0; }

print void print() { int i, j; for (i = 1; i < 9; ++i) { for (j = 1; j < 9; ++j) printf("%d ", cache[i][j]); printf("\n"); } }

solve void solve(int hx, int hy) { queue<node> q; q.push(node(hx,hy)); cache[hx][hy] = 0; while (!q.empty()) { int x = q.front().x; int y = q.front().y; q.pop(); inq[x][y] = 0; int k, newx, newy;

solve for (k = 0; k < 8; ++k) { newx = x + dx[k]; newy = y + dy[k]; if (!good(newx, newy)) continue; if (cache[newx][newy] == -1 (cache[newx][newy] > cache[x][y] + 1)) { cache[newx][newy] = cache[x][y] + 1; if (!inq[newx][newy]) { inq[newx][newy] = 1; q.push(node(newx,newy)); } } } } }

3.2. Feladat Egy 8 8-as sakktáblára elhelyezünk egy huszárt, amellyel két játékos felváltva lép. Aki nem tud olyan mezőre lépni, ahol még nem járt a huszár, az veszít. Kinek van nyerő stratégiája? Szimuláljuk le a játékot!

Be / Ki BE: A huszár kezdeti pozíciója. A kezdő fél (ember / szamítógép, ember 1 / ember 2) KI: A kétszemélyes játék lejátszása