Pagini recente » Cod sursa (job #238447) | Cod sursa (job #184247) | Cod sursa (job #3174465) | Cod sursa (job #2182552) | Cod sursa (job #2469639)
//wish me luck
#include <bits/stdc++.h>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
const int NMAX = 1000005;
int T,pi[NMAX],n;
string s;
void make_prefix(){
int i,q = 0;
pi[1] = 0;
for(i = 2 ; i <= n ; i++){
while(q && s[q + 1] != s[i])
q = pi[q];
if(s[q + 1] == s[i])
q++;
pi[i] = q;
}
}
int main(){
int i;
f >> T;
while(T--){
f >> s;
n = s.size();
s = ' ' + s;
make_prefix();
bool ok = 0;
for(i = n ; i >= 1 ; i--)
if(pi[i] && i % (i - pi[i]) == 0){
g << i << "\n" ;
ok = 1;
break;
}
if(!ok)
g << 0 << "\n";
}
return 0;
}