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