Pagini recente » Cod sursa (job #631407) | Cod sursa (job #1643981) | Cod sursa (job #915658) | Cod sursa (job #2253688) | Cod sursa (job #2253188)
#include <bits/stdc++.h>
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
char s[1000003];
int n,m,lps[1000005],ma;
void fnd_lps()
{
int k=0;
m=strlen(s);
for(int i=1; i<m; i++)
{
if(s[k]==s[i])
{
k++;
}
else
{
k=0;
if(s[k]==s[i])
k++;
}
lps[i]=k;
}
}
int main()
{
in >> n;
for(int i=1; i<=n; i++)
{
in >> s;
fnd_lps();
ma=0;
for(int j=0; j<m; j++)
{
if(lps[j]==0) continue;
if(lps[j]==j+1) continue;
if((j+1)%(j-lps[j]+1)==0 && j+1>ma)
{
ma=j+1;
}
}
out << ma << '\n';
}
return 0;
}