Pagini recente » Cod sursa (job #3185509) | Cod sursa (job #2835312) | Cod sursa (job #98540) | Cod sursa (job #279297) | Cod sursa (job #2639447)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("prefix.in");
ofstream fout ("prefix.out");
int LPS [1000003], ind, t, ans;
string str;
void KMP (string A){
ind = 0;
memset (LPS, 0, sizeof (LPS));
for (int i = 1; i < A.size ();){
if (A [ind] == A [i])
LPS [i ++] = ++ ind;
else if (ind != 0)
ind = LPS [ind - 1];
else LPS [i ++] = 0;
}
}
int main (){
fin >> t;
while (t --){
fin >> str;
KMP (str); ans = 0;
for (int i = str.size () - 1; i >= 0; i --){
if (LPS [i] != 0 && (i + 1) % (i + 1 - LPS [i]) == 0){
ans = i + 1;
break;
}
}
fout << ans << '\n';
}
return 0;
}