Pagini recente » Cod sursa (job #3039736) | Cod sursa (job #594067) | Cod sursa (job #748580) | Cod sursa (job #1807196) | Cod sursa (job #1883347)
#include <bits/stdc++.h>
#define lmax 1000002
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
char s[lmax];
int n,i,l,pi[lmax],j,out;
void prefix()
{
int k=0,i;
for(i=2;i<=l;i++)
{
while(k&&s[k+1]!=s[i]) k=pi[k];
if(s[k+1]==s[i]) k++;
pi[i]=k;
}
}
int main()
{
fin>>n;
for(i=1;i<=n;i++)
{
fin>>(s+1);
l=strlen(s+1); out=0;
memset(pi,0,sizeof(pi));
prefix();
for(j=1;j<=l;j++)
if(pi[j]&&j%(j-pi[j])==0) out=j;
fout<<out<<"\n";
}
return 0;
}