Pagini recente » Cod sursa (job #2677995) | Cod sursa (job #1451632) | Cod sursa (job #1301415) | Cod sursa (job #549406) | Cod sursa (job #1430341)
#include <cstdio>
#include <cstring>
using namespace std;
const int nmax = 1000000;
char a[nmax+5];
int pi[nmax+5];
int n;
void prefix()
{
pi[1] = 0;
int q = 0;
for(int i=2; i<=n; i++)
{
while(q && a[q+1] != a[i])
q=pi[q];
if(a[q+1] == a[i])
q++;
pi[i] = q;
}
}
int main()
{
freopen("prefix.in", "r", stdin);
freopen("prefix.out", "w", stdout);
int t;
scanf("%d\n", &t);
for(int q = 0; q<t; q++)
{
scanf("%s\n", a+1);
n = strlen(a+1);
prefix();
bool ok = false;
for(int i=n; i>0; i--)
if(pi[i] && i%(i-pi[i])==0)
{
printf("%d\n", i);
ok = true;
break;
}
if(!ok)printf("0\n");
}
return 0;
}