Pagini recente » Cod sursa (job #589248) | Cod sursa (job #2805684) | Cod sursa (job #2342672) | Cod sursa (job #2598028) | Cod sursa (job #1159587)
#include <iostream>
#include <fstream>
#include <cstring>
#define lmax 1000003
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int n,k;
char a[lmax]; int p[lmax];
int main()
{ int i,t;
f>>t; f.getline(a,2);
for(;t;t--)
{
f>>(a+1); a[0]=' ';
n=strlen(a)-1;
k=0;
for(i=2;i<=n;i++)
{
while (k && a[k+1]!=a[i])
k=p[k];
if (a[k+1]==a[i]) k++;
p[i]=k;
}
for(i=n;i>=1;i--)
if (p[i] && (p[i]%(i-p[i]))==0)
{ g<<i<<"\n"; break;}
if (!i) g<<"0\n";
}
return 0;
}