Pagini recente » Cod sursa (job #2539520) | Cod sursa (job #895102) | Cod sursa (job #895126) | Cod sursa (job #2627519) | Cod sursa (job #1516941)
#include <iostream>
#include <cstdio>
#define milion 1000100
#include <cstring>
using namespace std;
int pref_max[10][milion],t;
char sir[milion];
void rezolv()
{
scanf("%d",&t);
for (int l=1; l<=t; ++l)
{
scanf("\n");
scanf("%s",&sir);
int maxl=0;
int lun=strlen(sir);
int i=0,j=1;
while (j<lun)
if (sir[i]!=sir[j])
if (i==0)
++j;
else
i=pref_max[l][i-1];
else if (sir[i]== sir[j])
{
pref_max[l][j]=i+1;
++i;
++j;
}
for(int m=lun-1; m>0; --m)
if ( pref_max[l][m] && ((m+1)-pref_max[l][m]) && (m+1)%(m+1-pref_max[l][m])==0 && m+1>maxl)
maxl=m+1;
printf("%d\n",maxl);
}
}
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
rezolv();
return 0;
}