Pagini recente » Cod sursa (job #1786284) | Cod sursa (job #2161891) | Cod sursa (job #2195634) | Cod sursa (job #1764859) | Cod sursa (job #2286827)
#include <bits/stdc++.h>
#define MAXN 1000005
int LPS[MAXN];
void ComputeLPS(int N, char String[]) {
for (int i=2, Len=0; i<=N; ++i) {
while (Len && String[i] != String[Len+1])
Len = LPS[Len];
if (String[i] == String[Len+1]) ++ Len;
LPS[i] = Len;
}
}
std::ifstream In("prefix.in");
std::ofstream Out("prefix.out");
int N;
char String[MAXN];
void Citire() {
In >> String + 1;
N = strlen(String+1);
}
void Rezolvare() {
ComputeLPS(N, String);
int Ans = 0;
for (int i=2; i<=N; ++i)
if (LPS[i] && i % (i-LPS[i]) == 0)
Ans = i;
Out << Ans << '\n';
}
int main()
{
int T; In >> T;
while (T--) {
Citire();
Rezolvare();
}
return 0;
}