2926 - Sub String Rep
Cerința[edit | edit source]
Se dă numărul natural n și n șiruri de caractere de tip secvență. Determinați pentru fiecare dintre cele n șiruri dacă ele sunt alcătuite prin repetiția a unui subșir de caractere din el. Dacă da se afișează subșirul care a generat secvența sau -1 dacă secvența nu este alcătuită după aceste criterii.
Date de intrare[edit | edit source]
Programul citește de la tastatură pe primul rând numărul n, iar apoi n șiruri de caractere, pe linii diferite.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran pe câte un rând secvența cerută sau -1 conform enunțului.
Restricții și precizări[edit | edit source]
- 1 ≤ n ≤ 1000
- cele n șiruri de caractere citite vor avea maximum 1000 de caractere.
Exemplu 1[edit | edit source]
- Intrare
- 5
- abcabcabc abadabad aabaabaabaab abcdabc jbogzfcfndudqctnqcmzxypuzzlbxcnhddndipjxteakhuzzxlyujoqjncklfzsjdgnlxxjqbjciebhcngyxuohjrsvysoh
- Ieșire
- abc
- abad
- aab
- -1
- -1
Exemplu 2[edit | edit source]
- Intrare
- 4
- abcabcabcab abcdefabcab abababababab abcdefghij
- Ieșire
- abc
- abc
- ab
- abcdefghij
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 2926 - Sub String Rep
def find_subsequence(s):
n = len(s) for i in range(1, n//2 + 1): subsequence = s[:i] if subsequence * (n // i) == s: return subsequence return "-1"
def main():
n = int(input("Introduceți numărul de șiruri: ")) for _ in range(n): s = input("Introduceți un șir de caractere: ") result = find_subsequence(s) print(result)
if __name__ == "__main__":
main()
</syntaxhighlight>