Pagini recente » Cod sursa (job #998378) | Cod sursa (job #808256) | Cod sursa (job #1901107) | Cod sursa (job #1121923) | Cod sursa (job #1466453)
#include <bits/stdc++.h>
using namespace std;
#define Nmax 1000013
vector <int> KMP (string s){
vector <int> pi(Nmax,0);
pi[0]=0;
for (int i=1;i<s.size();++i){
int k = pi[i-1];
while(s[i]!=s[k] && k>0) k = pi[k-1];
if (s[i]==s[k]) ++k;
pi[i]=k;
}
return pi;
}
string s;
int t,i;
int main(void) {
ifstream cin("prefix.in");
ofstream cout("prefix.out");
cin>>t;
while(t--){
cin>>s;
vector <int> Match = KMP(s);
for (i=s.size()-1;i>0;--i)
if (Match[i] && (i+1)%(i+1-Match[i])==0) {
cout<<i+1<<"\n";
break;
}
if (i==0) cout<<0<<"\n";
}
return 0;
}