Fişierul intrare/ieşire: | parola.in, parola.out | Sursă | ACM ICPC Faza Nationala 2015 |
Autor | Steve Downing | Adăugată de | |
Timp execuţie pe test | 1 sec | Limită de memorie | 20480 kbytes |
Scorul tău | N/A | Dificultate | N/A |
Vezi solutiile trimise | Statistici
Parola
Fane Babanu incearca sa apare Iasiul si concurentii de la ACM de un nou atac. Cum vremurile s-au schimbat atacul este electronic de aceasta data. Pentru a putea apara Iasiul Fane trebuie sa sparga o parola. Dupa indelungi eforturi el a reusit sa afle ca parola este un text scris cu litere mici in alfabetul latin 'a'-'z', pentru care suma codurilor ascii % N este egala cu K. Fane a reusit sa obtina si un text si stie ca parola se afla in acel text dar nu stie intre care pozitii. Pentru a putea gasi parola el va putea folosi oricati plăieşi care vor încerca fiecare o parolă în acelasi timp, totuşi el vrea să reducă numărul de plăieşi folositi la minim. Ajutati-l pe Stefan spunandu-i cate parole se gasesc in textul dat. Fane are de spart maxim T parole.
Date de intrare
Fişierul de intrare parola.in are pe prima linie T numarul de parole. Urmeaza T teste fiecare pe 2 randuri. Pe primul rand a unui test se vor afla N si K pe urmatorul aflandu-se textul.
Date de ieşire
În fişierul de ieşire parola.out, pentru fiecare test pe un rand se va afla un numar reprezentand numarul de parole posibile in fiecare din teste.
Restricţii si observatii
- 1 ≤ T ≤ 15
- 1 ≤ N ≤ 1000000
- 0 ≤ K < N
- 1 ≤ L(text) ≤ 1000000
Doua parole vor fi considerate distincte daca sunt intre doi indici diferiti!
Parola vida nu este considerata o parola valida.
Exemplu
parola.in | parola.out |
---|---|
2 195 0 abc 196 0 bacbxxbbxxbbb | 1 5 |
Explicaţie
In primul test singura solutie este ab
In al doilea test solutiile sunt bacb, ac, bb(6-7), bb(10-11), bb(11-12)