Pagini recente » Cod sursa (job #1139624) | Cod sursa (job #1366829) | Istoria paginii runda/oji_2020/clasament | Cod sursa (job #1922593) | Cod sursa (job #31406)
Cod sursa(job #31406)
#include<fstream.h>
#include<stdio.h>
#include<string.h>
#define nmax 1000003
char s[nmax];
long pref[nmax],d;
void prefix()
{long i,k;
pref[0]=-1;
pref[1]=0;
for(i=1;i<=d;i++)
{k=i-1;
while(s[i-1]!=s[pref[k]]&&k>0)
k=pref[k];
pref[i]=pref[k]+1;
}
}
int main()
{long t,i,j;
//ifstream f("prefix.in");
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%ld",&t);
fgets(s,nmax,stdin);
for(i=1;i<=t;i++)
{fgets(s,nmax,stdin);
s[strlen(s)-1]=NULL;
d=strlen(s);
prefix();
for(j=d;j>0;j--)
if(!(j%(j-pref[j]))&&pref[j])
break;
printf("%ld\n",j);
}
fclose(stdout);
return 0;
}