Pagini recente » Cod sursa (job #1492423) | Cod sursa (job #1710610) | Cod sursa (job #3188785) | Cod sursa (job #1092423) | Cod sursa (job #2097426)
#include <bits/stdc++.h>
#define LMAX 1000000
using namespace std;
ifstream fi("prefix.in");
ofstream fo("prefix.out");
char C[LMAX+5];
int t,m,rez;
int LPS[LMAX+5];
void construire_lps(char P[])
{
for(int i=1, j=0; i<m; )
{
if(P[i]==P[j])
{
LPS[i]=j+1;
i++;
j++;
}
else
{
if(j==0)
{
LPS[i]=0;
i++;
}
else
j=LPS[j-1];
}
}
}
int main()
{
fi>>t;
while(t--)
{
fi>>C;
m=strlen(C);
construire_lps(C);
rez=0;
for(int i=m-1; i>=1; i--)
if(LPS[i]!=0 && (i+1)%(i+1-LPS[i])==0)
{
rez=i+1;
break;
}
fo<<rez<<"\n";
}
fi.close();
fo.close();
return 0;
}