Pagini recente » Cod sursa (job #1164763) | Cod sursa (job #874528) | Cod sursa (job #1093504) | Cod sursa (job #63277) | Cod sursa (job #2486813)
#include <bits/stdc++.h>
using namespace std;
const int MAX = 1e6 + 5;
string S;
int p[MAX];
int solve() {
int n = (int)S.size(), j = 0;
S.insert(0, " ");
for(int i = 2; i <= n; ++i) {
while(j && S[j + 1] != S[i]) j = p[j];
if(S[j + 1] == S[i]) ++j;
p[i] = j;
}
for(int i = n; i > 0; --i)
if(p[i] >= (i + 1) / 2 && p[i] % (i - p[i]) == 0) return i;
}
int main() {
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int T;
fin >> T;
while(T--) {
fin >> S;
int ans = solve();
if(ans == 1)ans = 0;
fout << ans << "\n";
}
}