Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2019-09-26 10:06:40.
Revizia anterioară   Revizia următoare  

 

Fişierul intrare/ieşire:strdup.in, strdup.outSursăRomanian Collegiate Programming Contest 2019
AutorSebastian PirtoacaAdăugată deRCPC2019RCPC2019 RCPC2019
Timp execuţie pe test0.1375 secLimită de memorie1536 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Siruri duplicat

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 \{(i, j) | 1 <= i <= j <= N\}iar substringul ales este cel aflat între poziţiile start şi end (considerând indexare de la 1 la N).

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.

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.

Restricţii şi precizări

  • $ 1 ≤ T ≤ 5 $
  • $ 1 ≤ N ≤ 1500 $

Exemplu

strdup.instrdup.out
This is some
text written on
multiple lines.
This is another
text written on
multiple lines.

Explicaţie

...

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?