Podany ciąg s, znajdź najkrótszy ciąg t, taki, że t^m = s.Podany ciąg s, znajdź najkrótszy ciąg t, taki, że, t^m = s
Przykłady:
s="aabbb" => t="aabbb"
s="abab" => t = "ab"
Jak szybko można to zrobić?
Oczywiście naiwnie, dla każdego m dzieli | s |, mogę spróbować, jeśli podciąg (s, 0, | s |/m)^m = s.
Można znaleźć rozwiązanie w czasie O (d (| s |) n), gdzie d (x) jest liczbą dzielników s. Czy można to zrobić bardziej efektywnie?