Pagini recente » Cod sursa (job #1033367) | Cod sursa (job #2100239) | Cod sursa (job #391668) | Cod sursa (job #325512) | Cod sursa (job #1051784)
#include <fstream>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
ifstream cin("prefix.in");
ofstream cout("prefix.out");
ios :: sync_with_stdio(false);
int T;
const int nmax = int(1e6) + 5;
static char str[nmax];
static int a[nmax];
int n;
for (cin >> T, cin.get();T;T--) {
cin.getline(str,nmax);
int ans = 0;
n = strlen(str);
for (int i = 1, k = 0;i < n;i++) {
while (k > 0 && str[i] != str[k]) k = a[k - 1];
k += (str[i] == str[k]);
a[i] = k;
int periodLength = i + 1 - a[i];
if (periodLength != i + 1 && (i + 1 ) % periodLength == 0) {
ans = max(ans, i + 1);
}
}
cout << ans << "\n";
}
return 0;
}