Marsjańskie DNA - International Olympiad in Informatics
Transkrypt
Marsjańskie DNA - International Olympiad in Informatics
InternationalOlympiadinInformatics2016 12-19thAugust2016 Kazan,Russia day0_3 dna Country:api-POL MarsjańskieDNA Rosjaznanajestzeswoichsukcesówwdziedzinieeksploracjiwszechświata. Niedawnorosyjscynaukowcypodczasanalizypróbekmarsjańskiejglebyznaleźli dziwnecząsteczki,któremogąbyćpewnymrodzajemDNA.Wprzeciwieństwiedo normalnego,ziemskiegoDNA,cząsteczkatamadwabazoweelementy,zamiast czterech.Całącząsteczkęmożnazatemzapisaćjakosłowozłożonezzerijedynek. Naukowcyzbadalidługośćcząsteczkiiokazałosię,żemaona n bazowych elementów.Terazchcąoniodkryćjejstrukturę,tj.znaleźćciągzerijedynek S kodującyelementytegoDNA.Abytozrobić,mogąoniwykonywaćtestyw specjalnymanalizatorzeDNA.Wkażdymteścieustawiasięsłowoopisająceciąg bazowychelementów,zakodowanyjakosłowo P ,aanalizatorsprawdza,czysłowo topojawiasięwmarsjańskimDNA,tj.czysłowo P jestpodsłowemsłowa S . Próbkajestbardzomała,dlategonaukowcymogąwykonaćjedynie t testów.Pomóż imwykonaćodpowiednietesty,abyokreślićstrukturęDNA. Szczegółyimplementacji Powinieneśnapisaćjednąfunkcję(metodę): s tringanalys e (intn,intt).Tafunkcjapowinnawykonywaćtesty,używając używającfunkcji(metody)bibliotecznejmake _te s tirozkwikłaćstrukturęDNA. n:długośćDNA. t:liczbadozwolonychtestów. funkcjapowinnadawaćwwynikuznalezionesłowoSopisująceDNA. Funkcjebiblioteczne make _te s t(s tringp).Tafunkcjasprawdza,czysłowo P jestpodsłowemsłowa S. p:słowo,którezostaniesprawdzonenaokolicznośćbyciapodsłowem. funkcjazwracatrue ,jeżeli P jestpodsłowem S ,natomiastfals e w przeciwnymwypadku. Przykład Programsprawdzającywywołujefunkcjęznastępującymiparametrami: analys e (3,7).Długośćsłowa S wynosi 3 .Dozwolonaliczbatestówwynosi natomiast 7 . 1/2 Programzawodnikawykonujenastępującewywołania: make _te s t("00")zwracafals e . make _te s t("01")zwracatrue . make _te s t("10")zwracatrue . make _te s t("11")zwracafals e . make _te s t("010")zwracafals e . Terazjedynymmożliwymsłowemjest"101",zatemfunkcjaanalys e zwraca"101". Podzadania ≤ 5, t = 31 . (25punktów) n ≤ 100, t = 256 . (64punkty) n ≤ 1000, t = 1024 . 1. (11punktów) n 2. 3. Przykładowyprogramsprawdzający Przykładowyprogramsprawdzającywczytujedanewnastępującymformacie: Wiersz1:słowo S . Wiersz2:liczbacałkowita t . Językiprogramowania SzczegółyimplementacjiwTwoimjęzykuprogramowaniaznajdująsięw dostarczonychplikachzszablonami. 2/2