Pagini recente » Cod sursa (job #721974) | Cod sursa (job #1169338) | Cod sursa (job #250157) | Borderou de evaluare (job #2329376) | Cod sursa (job #3161704)
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
const int N = 1e6 + 5;
int tt, pi[N];
char c[N];
int main() {
in >> tt;
while(tt--) {
in >> c;
int ans = 0, n = strlen(c);
for(int i=1; i<n; i++) {
int j = pi[i-1];
while(j && c[i] != c[j])
j = pi[j-1];
if(c[i] == c[j])
j++;
pi[i] = j;
if(pi[i] && (i + 1) % (i - pi[i] + 1) == 0)
ans = i + 1;
}
out << ans << '\n';
}
return 0;
}