55. ročník Matematické olympiády 2005/2006

Podobné dokumenty
55. ročník Matematické olympiády 2005/2006

MATEMATICKÁ OLYMPIÁDA

59. ročník Matematické olympiády 2009/2010

1.5.7 Prvočísla a složená čísla

PRVOČÍSLA 1 Jan Malý UK v Praze a UJEP v Ústí n. L. Obsah

Kombinace s opakováním

Metoda konjugovaných gradientů

3.2.9 Věta o středovém a obvodovém úhlu

Andrew Kozlík KA MFF UK

Kombinace s opakováním

53. ročník Matematické olympiády 2003/2004

3.3.4 Thaletova věta. Předpoklady:

Binomická věta

61. ročník Matematické olympiády 2011/2012

63. ročník Matematické olympiády 2013/2014

9 Stupně vrcholů, Věta Havla-Hakimiho

7.3.9 Směrnicový tvar rovnice přímky

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

7.3.9 Směrnicový tvar rovnice přímky

Hodnocení přesnosti výsledků z metody FMECA

Základním pojmem v kombinatorice je pojem (k-prvková) skupina, nebo také k-tice prvků, kde k je přirozené číslo.

Úlohy krajského kola kategorie A

1. KOMBINATORIKA. Příklad 1.1: Mějme množinu A a. f) uspořádaných pětic množiny B a. Řešení: a)

1 Gaussova kvadratura

Geometrická zobrazení

2. STAVBA PARTPROGRAMU

Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

3. Mocninné a Taylorovy řady

Dokumentace programu piskvorek

( ) Příklady na otočení. Předpoklady: Př. 1: Je dána kružnice k ( S ;5cm)

Programovací jazyk Pascal

NUMP403 (Pravděpodobnost a Matematická statistika I)

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

Reprezentace přirozených čísel ve Fibonacciho soustavě František Maňák, FJFI ČVUT, 2005

P. Rozhodni, zda bod P leží uvnitř, vně nebo na kružnici k. Pokud existují, najdi tečny kružnice procházející bodem P.

1. Úvod do základních pojmů teorie pravděpodobnosti

Hledání správné cesty

Buckinghamův Π-teorém (viz Barenblatt, Scaling, 2003)

3.2.9 Věta o středovém a obvodovém úhlu

SPOTŘEBITELSKÝ ÚVĚR. Na začátku provedeme inicializaci proměnných jejich vynulováním příkazem "restart". To oceníme při opakovaném použití dokumentu.

66. ročník Matematické olympiády 2016/2017

6 5 = 0, = 0, = 0, = 0, 0032

Programy na PODMÍNĚNÝ příkaz IF a CASE

f (k) (x 0 ) (x x 0 ) k, x (x 0 r, x 0 + r). k! f(x) = k=1 Řada se nazývá Taylorovou řadou funkce f v bodě x 0. Přehled některých Taylorových řad.

THE POSSIBILITY OF RELOCATION WAREHOUSES IN CZECH-POLISH BORDER MOŽNOSTI RELOKACE SKLADŮ V ČESKO-POLSKÉM PŘÍHRANIČÍ

MATEMATIKA. O paradoxech spojených s losováním koulí

Měření indukčností cívek

Obsah přednášky. 1. Principy Meta-learningu 2. Bumping 3. Bagging 4. Stacking 5. Boosting 6. Shrnutí

(iv) D - vybíráme 2 koule a ty mají různou barvu.

1.3.7 Trojúhelník. Předpoklady:

Algoritmizace prostorových úloh

59. ročník Matematické olympiády 2009/2010

Zadání soutěžních úloh

1 Seznamová barevnost úplných bipartitních

Zadání druhého zápočtového projektu Základy algoritmizace, 2005

Úvod do programování

Dynamika populací s oddělenými generacemi

Algoritmy a algoritmizace

NPRG030 Programování I RNDr.Tomáš Holan, Ph.D. 4.patro, č

Příklady: - počet členů dané domácnosti - počet zákazníků ve frontě - počet pokusů do padnutí čísla šest - životnost televizoru - věk člověka

METODICKÉ LISTY Z MATEMATIKY pro gymnázia a základní vzdělávání

NPRG030 Programování I, 2018/19 1 / :25:37

Tabulkový procesor. Základní rysy

Budeme pokračovat v nahrazování funkce f(x) v okolí bodu a polynomy, tj. hledat vhodné konstanty c n tak, aby bylo pro malá x a. = f (a), f(x) f(a)

Dijkstrův algoritmus

Závěrečná zkouška z informatiky 2011

B) EX = 0,5, C) EX = 1, F) nemáme dostatek informací.

Rozlišujeme dva základní typy šifrování a to symetrické a asymetrické. Symetrické

Informatika navazující magisterské studium Přijímací zkouška z informatiky 2018 varianta A

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1

57. ročník Matematické olympiády 2007/2008

66. ročník Matematické olympiády 2016/2017

Úlohy domácího kola kategorie B

Reprezentace problému rozvrhování zakázkové výroby disjunktivním grafem

57. ročník Matematické olympiády 2007/2008

MATEMATIKA 1 4 A B C D. didaktický test. Zadání neotvírejte, počkejte na pokyn! MA1ACZMZ07DT. Pokyny pro vyplňování záznamového archu

β 180 α úhel ve stupních β úhel v radiánech β = GONIOMETRIE = = 7π 6 5π 6 3 3π 2 π 11π 6 Velikost úhlu v obloukové a stupňové míře: Stupňová míra:

Délka kružnice (obvod kruhu) II

6 Impedanční přizpůsobení

Časová a prostorová složitost algoritmů

Návrh vysokofrekvenčních linkových transformátorů

Konstrukce trojúhelníků II

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Základním pojmem v kombinatorice je pojem (k-prvková) skupina, nebo také k-tice prvků, kde k je přirozené číslo.

Mocnost bodu ke kružnici

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

Alternativní rozdělení. Alternativní rozdělení. Binomické rozdělení. Binomické rozdělení

Program a životní cyklus programu

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Mocnost bodu ke kružnici

9 Skonto, porovnání různých forem financování

Cykly a pole

Přijímací zkouška na navazující magisterské studium 2015

MULTIKRITERIÁLNÍ ROZHODOVÁNÍ VEKTOROVÁ OPTIMALIZACE

Přijímací zkouška na navazující magisterské studium 2017

Univerzita Karlova v Praze Matematicko-fyzikální fakulta

Implementace seznamů do prostředí DELPHI pomocí lineárního seznamu

Zadání soutěžních úloh

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

Transkript:

55. roční Matematicé olympiády 005/006 Úlohy ústředního ola ategorie P 1. soutěžní den Na řešení úloh máte,5 hodiny čistého času. Řešení aždého příladu musí obsahovat: Popis řešení, to znamená slovní popis použitého algoritmu, argumenty zdůvodňující jeho správnost(případně důaz správnosti algoritmu), disusi o efetivitě vašeho řešení(časová a paměťová složitost). Slovní popis řešení musí být jasný a srozumitelný i bez nahlédnutí do samotného zápisu algoritmu(do programu). Program. V úlohách P-III-1 a P-III- je třeba uvést dostatečně podrobný zápis algoritmu, nejlépe ve tvaru zdrojového textu nejdůležitějších částí programu v jazyce Pascal nebo C. Ze zápisu můžete vynechat jednoduché operace jao y, y, implementaci jednoduchých matematicých vztahů apod. V úloze P-III-3 zapište úplný program pro paralelizátor. Hodnotí se nejen správnost programu, ale taé valita popisu řešení a efetivita zvoleného algoritmu. P-III-1 Příšery Na monitoru se zase jednou schyluje velé bitvě mezi armádou hráče a armádou jeho počítače. Každou armádu tvoří N příšer. Každou příšeru můžeme popsat dvěma přirozenými čísly: první popisuje její úto (útočnou sílu), druhé pa její obranu(obranné schopnosti). Příšeru s útoem a a obranou b budeme značit a/b. Kdyžspolubojujídvěpříšeryaútoprvníjevětšínežobranadruhé,druhápříšerajezabita.Můžesetaéstát,žese obě příšery zabijí navzájem nebo že obě přežijí. Příšera vyhraje souboj, poud zabije druhou příšeru a sama přežije. Příšery ovládané počítačem útočí, hráč se musí bránit. Proti aždé z příšer počítače musí poslat právě jednu ze svých příšer. Všechny souboje probíhají současně. Úloha: Napište program, terý zjistí, oli mohou hráčovy příšery maximálně vyhrát soubojů. Vstup:Naprvnímřáduujeceléčíslo N (1 N 10000) početpříšer,terémáaždýzhráčůdispozici. Nadruhémřádujsouuvedenyhráčovypříšery,natřetímpapříšerypočítače.Útoiobranaaždépříšeryjeceléčíslood1 do1000000000. Výstup: Vypište jediné celé číslo největší počet hráčových příšer, teré mohou najednou vyhrát své souboje. Přílady: 3 9/, 9/7, 8/8 100/100, 1/1, 7/8 10/1, 10/1, 10/, 10/9 10/1, 10/1, 10/, 10/8 7/3, /1, 7/7, 5/6 10/1, /7, 3/6, 1/1 P-III- Bürroland (Nad příšerou 7/8 vyhraje jedině příšera 9/7. Příšeře 1/1 může hráč přiřadit terouoliv ze svých zbylých dvou příšer.) 0 (Bez ohledu na rozdělení se všechny příšery zabijí navzájem.) (Jediné řešení: své příšery hráč přiřadí postupně třetí, první, druhé a čtvrté příšeře počítače.) V Bürrolandu vyřešili otázu nezaměstnanosti po svém zaměstnali hromadu úředníů. Aby měli noví úředníci co na práci, začali vydávat nejrůznější potvrzení, terá je potřeba předládat při různých příležitostech. A jeliož úředníů je mnoho, aždý z nich je úzce specializovaný a vydává pouze jeden typ potvrzení. Stejný typ potvrzení ovšem může vydávat více úředníů. Dostat od úřednía potvrzení, teré vydává, není nitera lehé. Abyste ho dostali, musíte mít potvrzení jiného onrétního typu a tomu ještě musíte úředníovi předložit něoli svých osobních doladů.(nezáleží na tom, jaých, důležitý je pouze jejich počet.) Jožin už vlastní jedno potvrzení, ale potřeboval by si vyřídit potvrzení jiného typu. Nyní ho zajímá, jestli je to vůbec možnéapoudano,jaýnejmenšípočetosobníchdoladůmutomubudestačit.(projožinajesnazšíoběhatpárúředníů navícnežnajítvesvérodnébažiněrodnýlist.) Úloha:Jedánpočetrůznýchtypůpotvrzení N ( N 10000),početúředníů M (1 M 1000000)ačíslo K (1 K 10 000) udávající počet různých osobních doladů existujících v Bürrolandu. Typypotvrzeníjsouočíslovanéod1do N.Jožinvlastnípotvrzenítypu1ashánípotvrzenítypu N. Pro aždého úřednía jsou dána tři čísla: typ potvrzení, teré mu je potřeba uázat, typ potvrzení, teré vydává, a počet osobníchdoladů,teréjenutnémítssebou(číslood0do K). 1

Vášprogrammávypsatnejmenšípočetosobníchdoladů,teréstačízísánípotvrzenítypu N,ataépořadí,vjaém máme potvrzení vyřizovat. Poud není možné požadované potvrzení zísat, vypište místo toho zprávu, že to není možné. Přílad: N=, M=5, K= 1 10 3 31 131 P-III-3 Pišvory 1 3 Existuje více způsobů, ja zísat čtvrté potvrzení. Můžeme ho dostat přímo za potvrzení 1(u prvního úřednía), ale tomu potřebujeme dva dolady. Nebo si můžeme nejdříve zařídit potvrzení (u druhého úřednía),potom3(utřetího)anaonec(učtvrtého),ovšemtomu potřebujeme předložit třetímu úředníovi taé dolady. Nejlepší je zísatpotvrzení3(upátéhoúřednía)apotom,nacožnámstačí jediný dolad. Mach a Šebestová spolu mají rozehranou partii pišvore. Šebestová hraje s řížy a začínala. Vproměnných RaCjepočetřádůasloupcůhracíplochy,vdvourozměrnémpoli Ajenasouřadnicích[i, j](de 0 i < R,0 j < C)zna X, O nebo. (zatímprázdnépolíčo).vproměnné Kjedélařadypotřebnévýhřepartie. Můžete předpoládat, že oretně popisuje rozehranou partii, ve teré je právě na tahu Šebestová.(Čili počet řížůaolečejestejnýanidenahracíplošeseještěnevysytuje Kstejnýchznaůvřaděvedlesebe.) Soutěžní úloha: Napište co nejrychlejší program pro paralelizátor, terý pro aždý přípustný sončí, přičemž úspěšně sončí právě tehdy, dyž v zadané pozici má Šebestová vyhrávající strategii(jinými slovy, poud existuje postup, terý určí, jamášebestováhrátareagovatnamachovytahyta,abyvždyvyhrála,aťužmachhrajejaoliv). Přílady: R=6, C=5, K=...... A=....OXO..X...... R=6, C=5, K= XOXOX XOXOX A= OXO.O XO.OX X... OXOXO R=5, C=6, K=6 A= Studijní text Pišvory sončí úspěšně (Šebestová začne tahem na políčo[, 3], čili na políčo v třetím řádu a čtvrtém sloupci, čímždostanetřiznay X vedlesebe.idyžmachodpovítahemnapolíčo[5,0]nebo[1,], Šebestovámůževdalšímtahuvždytáhnoutnadruhéznichavyhrát.) sončí neúspěšně (Šebestová prvním tahem řadu čtyř nevytvoří, doonce ani nedoáže zabránit Machovi, aby příštím tahem vyhrál.) sončí neúspěšně (Řada šesti se dá vytvořit jedině vodorovně. Mach proto snadno zabrání Šebestové vyhrát. Při optimální hře obou hráčů partie sončí remízou.) Pišvory jsou hra, terou hrají dva hráči na čtverečovaném papíru obdélníového tvaru. Na začátu hry se hráči dohodnou na celém ladném čísle K. Každý hráč má svou značu: hráč, terý začíná, obvyle používá říže( X ), druhý hráčolečo( O ).Hráčitahajístřídavě,važdémtahuhráčzvolíprázdnépolíčonahracímplánuaumístínanějsvou značu. Hra ončí, poud něterý z hráčů deoliv na hracím plánu vytvořil souvislou řadu K svých znaů ve vodorovném, svislém nebo úhlopříčném směru. Poud se celá plocha zaplní a nido nevyhrál, hra ončí remízou. Studijní text Paralelizátor (Tento studijní text je identicý s textem uvedeným u úloh domácího i rajsého ola.) Za sedmero horami a sedmero řeami vymyslel vynálezce Kleofáš podivný stroj, terý nazval paralelizátor. Na první pohled vypadal paralelizátor jao obyčejný počítač... Byl tu vša jeden malý, ale o to důležitější rozdíl. Za určitých oolností doázal paralelizátor paralelně(tj. současně) spustit více větví programu, aniž by ho to jaoliv zpomalilo. Kleofáš rychle pochopil, že jen ze slovního popisu tohoto zázrau by nido nebyl moc moudrý, a ta vymyslel i programovací jazy, v němž je možné psát programy pro jeho paralelizátor. Programy pro paralelizátor se budou od lasicých lišit mimo jiné tím, že nebudou mít žádný. Budeme pouze rozlišovat, zda program sončil úspěšně nebo neúspěšně. U lasicých programů by to znamenalo, že nás zajímá jen tzv. exit code(návratová hodnota) programu. Kleofášův programovací jazy je téměř přesnou opií jazya Pascal. Oproti lasicému Pascalu v něm nemáme dispozici generátor náhodných čísel(a tedy napřílad funci random), taže je předem dáno, ja bude výpočet aždého programu vypadat. Zato přibyly čtyři nové příazy: Accept, Reject, Both(x) a Some(x)(de x je proměnná typu integer). Příaz Accept úspěšně uončí běžící program.

Příaz Reject uončí běžící program, ale neúspěšně. Stejný význam má i provedení standardního Pascalsého příazu Halt a uončení výpočtu programu přechodem přes oncové End., příaz Reject definujeme jen vůli názornosti. V následujícím textu budeme vytvořením opie programu rozumět to, že se v operační paměti vytvoří úplně přesná opie celého programu včetně obsahu jeho proměnných výslede bude stejný, jao dybychom už od začátu daný program spustili ne jednou, ale dvarát. Příaz Both(x) zastaví atuálně běžící program. Vytvoří se dvě jeho identicé opie. V první z nich je hodnota proměnné x nastavena na 0, v druhé na 1. Obě opie programu jsou paralelně spuštěny, přičemž jejich výpočet poračuje příazem následujícím za příslušným příazem Both. Poud obě opie úspěšně sončí, v následujícím tatu procesoru úspěšně sončí i původní program. Jestliže jedna z opií sončí neúspěšně(druhá přitom sončit ani nemusí), původní program v následujícím tatu sončí taé neúspěšně. Ve všech ostatních případech(tj. dyž jedna opie nidy nesončí a druhá buď rovněž nidy nesončí, nebo sončí úspěšně) původní program nidy nesončí. Příaz Some(x) funguje podobně. Rovněž zastaví atuálně běžící program. Opět se vytvoří dvě jeho identicé opie, vprvníznichjehodnotaproměnné xnastavenana0,vdruhéna1.oběopieprogramujsouparalelněspuštěny,přičemž jejich výpočet poračuje příazem následujícím za příslušným příazem Some. Jamile něterá z opií úspěšně sončí, v následujícím tatu procesoru úspěšně sončí i původní program. Poud obě opie sončí neúspěšně, v následujícím tatu procesoru sončí neúspěšně taé původní program. Ve všech ostatních případech(tj. dyž jedna opie nidy nesončí a druhá buď rovněž nidy nesončí, nebo sončí neúspěšně) původní program nidy nesončí. Slovněmůžemetytooperacepopsatnásledovně:PříazBothprovádí paralelníand ověří,zdaoběvětveúspěšně sončí.příazsomeprovádí paralelníor ověří,zdaaspoňjednazvětvíúspěšněsončí. Netrvalo dlouho a Kleofáš si uvědomil, že na taovémto zázračném zařízení doáže něteré problémy řešit až neuvěřitelně rychle. Napřílad testování prvočíselnosti je sutečně snadné. Přílad 1: V proměnné N je přirozené číslo. Napište program pro paralelizátor, terý pro aždou hodnotu N sončí, přičemž úspěšně sončí právě tehdy, dyž N je prvočíslo. Řešení: Pomocí volání příazu Both paralelně vygenerujeme všechna čísla od do N 1 a najednou pro aždé z nich ověříme, zdadělí N.Každávětevvýpočtuúspěšněsončí,jestliže její číslonedělí N.Abypůvodníprogramúspěšněsončil,musí úspěšně sončit všechny větve, tedy žádné z vygenerovaných čísel nesmí dělit N. Časová složitost programu je O(log N). { VSTUP: N : integer;} var moc, pocet_cifer: integer; cislo: integer; i,x : integer; begin { ošetříme orajový případ} if N = 1 then Reject; { zjistíme,oli má N cifer ve dvojovésoustavě} moc := 1; pocet_cifer:= 0; whilemoc < N do begin moc := moc * ; inc(pocet_cifer); end; { vygenerujemečíslaod 0 do ^pocet_cifer- 1 } cislo:= 0; for i:=1 to pocet_cifer do begin Both(x); cislo:= *cislo+x; end; { moc malé dělitele zoušet nebudeme, prohlásíme za dobré } if cislo<= 1 then Accept; { ani příliš velé dělitele zoušet nebudeme} if cislo>= N then Accept; { jina zoušíme, zda vygenerované číslo dělí N } if N mod cislo <> 0 then Accept; Reject; end. 3

Názorněsiuážeme,javypadávýpočetparalelizátorunatomtoprogramupro N=3apro N=6.Kopieprogramu, teré vzniají během výpočtu, budeme číslovat v pořadí, v jaém vzniají. Pro N = 3 bude výpočet probíhat následovně: Spustí se opie#1(tedy vlastně originál). Spočítá,žepocetcifer=. Spustísefor-cylusproi=1. Kopie#1sezastaví,vzninouopie#a#3. Vopii#jecislo=0,vopii#3jecislo=1. Vobouběžícíchopiíchporačujefor-cylusproi=. Kopie#a#3sezastaví,z#vzninou#a#5,z#3vzninou#6a#7. Vopiích#až#7budemítproměnnácislohodnoty0až3. Kopie#a#5úspěšněsončí,neboťčísla0a1nechcemetestovatjaodělitele. Kopie#úspěšněsončí,neboťužúspěšněsončilyoběopie,teréznívznily. Kopie#7 úspěšně sončí, neboť ani číslo 3 nechceme testovat. Kopie#6úspěšněsončí,neboťnedělí3. Kopie#3úspěšněsončí,neboťužúspěšněsončilyoběopie,teréznívznily. Kopie#1(tedy původní program) úspěšně sončí, neboť už úspěšně sončily obě opie, teré z ní vznily. Pro N = 6 bude výpočet probíhat následovně: Podobnějaopři N =3sedostanemedosituace,dyběžíopie#8až#15,proměnnácislovnichmá hodnotypostupněod0do7. Kopie#8a#9(spřílišmalýmčíslem)úspěšněsončí. Kopie#(znížvznily#8a#9)úspěšněsončí. Kopie#1a#15(spřílišvelýmčíslem)úspěšněsončí. Kopie#7(znížvznily#1a#15)úspěšněsončí. Kopie#10až#13sončí ato:#1a#13úspěšně(ani5nedělí6),#10a#11neúspěšně(a3dělí6). Kopie#5sončíneúspěšně(obějejí děti sončilyneúspěšně),opie#6sončíúspěšně. Kopie# sončí neúspěšně(neboť opie#5 sončila neúspěšně), opie#3 sončí úspěšně. Kopie#1(tedy původní program) sončí neúspěšně. Přílad : V proměnných N a K jsou přirozená čísla. Napište program pro paralelizátor, terý pro aždé N sončí, přičemž úspěšněsončíprávětehdy,dyž Nmánějaéhodělitelezmnožiny M= {,3,..., K 1}. Řešení: PomocívolánípříazuSomeparalelněprojdemevšechnačísla m M,stačínám,dyžlibovolnéjednoznichdělí N. (Jinýpohlednatotéžřešení:PomocívolánípříazuSome uhodneme dělitele m Maověříme,zdajsmehouhodli správně.nanášprogramsemůžemedívatta,žesenevětví,aleaždévolánísome uhodne ado xdosadí správnou hodnotu. Jestliže tedy N má v množině M dělitele, najdeme ho, jina sončíme s nějaým číslem, teré N nedělí.) Časová složitost programu je O(K). { VSTUP: N, K : integer;} var cislo: integer; i,x : integer; begin { paralelnězoušímečísla od 0 do ^K - 1 } cislo:= 0; for i:=1 to K do begin Some(x); cislo:= *cislo+x; end; { 0 a 1 do množinymnepatří} if cislo<= 1 then Reject; { zusíme,zda vygenerovanéčíslo dělí N } if N mod cislo = 0 then Accept; Reject; end.

55. roční Matematicé olympiády 005/006 Úlohy ústředního ola ategorie P. soutěžní den P-III- Násobe Program: nasobe.pas/ nasobe.c/ nasobe.cpp Vstup: nasobe.in Výstup: nasobe.out Nejmenšíladnýnásobečísla13,terýjetvořenjenčíslicemi1a,je1.Ičíslo997mánásobyzapsanéjenpomocíčíslic 1a,nejmenšímznichje1111=997 11596.Nejmenšímnásobemtří,veterémmohoubýtpoužitypouze číslicea7,ječíslo. Vaši úlohou je napsat program, terý bude taová čísla hledat. Vstup: Na prvním řádu ního souboru je uveden řetězec R tvořený minimálně jednou a maximálně deseti číslicemi(od 0 do 9). Všechny tyto číslice jsou navzájem různé. Nadruhémřádujeuvedenojednoladnéceléčíslo N(1 N 1000000). Výstup: Vypištejedinýřádeavněmjedinéceléčíslo nejmenšíladnýnásobečísla N,veterémsevysytujípouzečíslice z řetězce R.(Pozor, toto číslo může mít mnoho číslic.) Poudčíslo Nžádnýtaovýnásobenemá,vypištemístotohořetězec neexistuje. Přílad: nasobe.in 1 997 nasobe.in 1379 nasobe.in 76531 7 nasobe.out 1111 nasobe.out neexistuje nasobe.out 7 1

P-III-5 Strána Program: strana.pas/ strana.c/ strana.cpp Vstup: strana.in Výstup: strana.out Rozhodli jsme se, že začneme onurovat světoznámým vyhledávačům, jao jsou napřílad Google a Yahoo. Hlavním líčem úspěchu bude samozřejmě prezentace nalezených stráne uživateli. Přesněji, chtěli bychom z aždé nalezené strány uázat co nejratší úse obsahující všechna slova, terá uživatel hledal. Vaší úlohou bude napsat program, terý taový úse v dané stránce nalezne. Soutěžní úloha: Je dáno N slov, terá uživatel zadal. Taé je dán text strány obsahující M slov. Napište program, terý najde nejratší úse strány, v němž se vysytují všechna zadaná slova(aždé alespoň jednou). Úse strány tvoří něoli po sobě jdoucích slov. Déla úseu je rovna součtu jejich déle plus jejich počet minus 1(za mezery mezinimi).tedynapříladúse Totoje úse mádélu1. Vstup: Naprvnímřáduníhosouborujejedinéceléčíslo N početvyhledávanýchslov.následuje Nřádů,naaždémznich je jedno vyhledávané slovo. Všechna tato slova jsou navzájem různá. Nadalšímřádusenacházíceléčíslo M početslovnastránce.následuje Mřádů,naaždémznichjejednoslovotextu strány, v pořadí, v jaém jsou na stránce uvedena. Omezení: Každé slovo je řetězec tvořený 1 až 100 malými písmeny anglicé abecedy. Propočetvyhledávanýchslov Nplatí1 N 5000.Součetdélevyhledávanýchslovnepřeročí100000. Propočetslovnastránce Mplatí1 M 00000.Součetdéleslovnastráncenepřeročí1000000. Výstup: Vypište nejratší úse strány, v němž se aždé vyhledávané slovo vysytuje alespoň jednou. Poud je taových úseů více, vypište ten, terý je nejblíže začátu strány. Úse vypisujte ta, ja je uveden na u, tedy aždé slovo na samostatném řádu. Poudseněterévyhledávanéslovovtextustránynenachází,vypištejedinýřádestextem Chybnástrána! (bez uvozove). Přílad: strana.in 3 prisli 0 poslali me m aby prisli m dyz neprijdou m ta neprijdou m strana.out m aby prisli