Pagini recente » Cod sursa (job #167574) | Cod sursa (job #1874725) | Cod sursa (job #997560) | Cod sursa (job #543261) | Cod sursa (job #2288924)
#include <bits/stdc++.h>
#define nmax 1000005
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int nn,n,m,k,p[nmax],nr,v[1005];
char c[nmax];
int main() {
int i,j;
f>>nn;
f.getline(c+1,nmax);
for (j=1;j<=nn;j++) {
f.getline(c+1,nmax);
n=strlen(c+1);
//cout<<"-->"<<c+1;
for (i=1;i<=n;i++) p[i]=0;
k=0;
for (i=2;i<=n;i++) {
while (k!=0 && c[k+1]!=c[i]) k=p[k];
if (c[k+1]==c[i]) k++;
p[i]=k;
}
for (i=n;i>=1;i--) {
if (p[i]!=0 && i%(i-p[i])==0) {
g<<i<<'\n';
break;
}
if (i==1) g<<0<<'\n';
}
}
return 0;
}