Pagini recente » Cod sursa (job #2758813) | Cod sursa (job #1457430) | Cod sursa (job #1549187) | Cod sursa (job #112472) | Cod sursa (job #922504)
Cod sursa(job #922504)
#include <iostream>
#include <cstdio>
#include <cstring>
#define DN 1000005
using namespace std;
char a[DN];
int pi[DN],m;
void make()
{
int k=0;
pi[1]=0;
for(int i=2;i<=m;++i)
{
while(k && a[k+1]!=a[i])
k=pi[k];
if(a[k+1]==a[i])
++k;
pi[i]=k;
}
}
int main()
{
int n;
freopen("prefix.in","r", stdin);
freopen("prefix.out","w",stdout);
scanf("%d\n",&n);
for(;n;--n)
{
scanf("%s\n",a+1);
m=strlen(a+1);
make();
bool ok=false;
for(int i=m;i>=1;--i)
{
if( pi[i] && i%(i-pi[i])==0)
{
printf("%d\n",i);
ok=true;
break;
}
}
if(ok==false)
{
printf("0\n");
continue;
}
}
return 0;
}