Nu aveti permisiuni pentru a descarca fisierul grader_interact.cpp
Diferente pentru problema/strdup intre reviziile #18 si #1
Diferente intre titluri:
Siruri Duplicat
strdup
Diferente intre continut:
== include(page="template/taskheader" task_id="strdup") ==
Mihai are un şir de caractere de lungime **N** format din litere mici şi mari ale alfabetului Englez şi cifre. Acesta definieşte un substring (e.g. caractere aflate pe poziţii consecutive) ca fiind duplicat, dacă substring-ul apare de cel putin 2 ori in şirul iniţial, la poziţii diferite. Mai mult, Mihai defineşte valoarea unui şir de caractere astfel: probabilitatea ca alegând aleator un substring nevid, acesta să fie duplicat. Să se găsească valoarea unui şir de caractere dat. Rezultatul se va afişa sub forma unei fracţii **ireductibile**. Precizare: Când Mihai alege aleator un substring nevid acesta procedează astfel: alege 2 poziţii (start, end) aleator din mulţimea <tex>\{(i, j) | 1 <= i <= j <= N\}</tex>iar substringul ales este cel aflat între poziţiile *start* şi *end* (considerând indexare de la *1* la *N*).
Poveste şi cerinţă...
h2. Date de intrare
Fişierul de intrare $strdup.in$conţine pe prima linie numărul de teste **T**.Pe următoarele **T** linii se va găsii câte un şir de caractere format din litere mici şi mari + cifre.
Fişierul de intrare $strdup.in$ ...
h2. Date de ieşire
În fişierul de ieşire $strdup.out$ se vor scrie **T** fracţii pe câte un rând, sub forma <numărător>/<numitor> (fără alte spaţii suplimentare), reprezentând probabilitatea ca alegând aleator un substring nevid, acesta să fie duplicat. h2. Restricţii şi precizări
În fişierul de ieşire $strdup.out$ ...
* $1 ≤ T ≤ 5$ * $2 ≤ N ≤ 1000$ * Se garanteză că cel puţin un substring este duplicat; * Atenţie la limita de memorie!
h2. Restricţii * $... ≤ ... ≤ ...$
h2. Exemplu table(example). |_. strdup.in |_. strdup.out |
| 2 00 aaab | 2/3 1/2
| This is some text written on multiple lines. | This is another text written on multiple lines.
| h3. Explicaţie
Pentru primul test, Mihai poate alege 3 substring-uri nevide identificate de poziţiile: (1, 1) - "0", (1, 2) - "00" şi (2, 2) - "0". Dintre acestea, 2 sunt duplicat - ambele "0". Prin urmare, rezultatul este 2/3. Pentru al doilea test, Mihai poate alege 10 substring-uri diferite. Dintre acestea, cele duplicate sunt: * (1, 1) - "a" * (1, 2) - "aa" pentru că mai apare şi pe (2, 3); * (2, 2) - "a" * (2, 3) - "aa" * (3, 3) - "a" Probabilitatea ca substring-ul să fie duplicat este 5/10 = 1/2 (fracţia trebuie afişată in formă ireductibilă!).
...
== include(page="template/taskfooter" task_id="strdup") ==