Pagini recente » Cod sursa (job #975842) | Cod sursa (job #3280997) | Cod sursa (job #411232) | Cod sursa (job #2907548) | Cod sursa (job #1198663)
#include<cstdio>
#include<string.h>
using namespace std;
int pref[1000001];
bool ok[1000001];
char s[1000001];
int main(){
freopen ("prefix.in","r",stdin);
freopen ("prefix.out","w",stdout);
int n,t,i,k;
scanf ("%d/n",&t);
for(;t>0;t--){
scanf ("%s\n",&s);
n=strlen(s);
for(i=n;i>0;i--) s[i]=s[i-1];
pref[1]=0;
ok[1]=false;
for(i=2;i<=n;i++){
k=pref[i-1];
while(k>0 &&s[k+1]!=s[i])
k=pref[k];
if (s[k+1]==s[i]) k++;
pref[i]=k;
if (pref[i]!=0 &&i%(i-pref[i])==0) ok[i]=true;
else ok[i]=false;
}
for(i=n;i>0 &&ok[i]==false;) i--;
printf ("%d\n",i);
for(i=1;i<=n;i++) ok[i]=false;
}
return 0;
}