Pagini recente » Cod sursa (job #1790441) | Cod sursa (job #2948953) | Cod sursa (job #1166783) | Cod sursa (job #1068284) | Cod sursa (job #1919411)
#include <cstdio>
#include <cstring>
using namespace std;
char sir[1000010];
int d[1000010];
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
int t;
scanf("%d\n",&t);
for(int test=1;test<=t;test++)
{
gets(sir+1);
int l=strlen(sir+1),k=0;
for(int i=2;i<=l;i++)
{
while(k>0 && sir[i]!=sir[k+1]) k=d[k];
if(sir[i]==sir[k+1]) k++;
d[i]=k;
}
int sol=0;
for(int i=l;i>=1;i--)
if(i%(i-d[i])==0 && d[i]>0) {sol=i;break;}
printf("%d\n",sol);
}
return 0;
}