Pagini recente » Cod sursa (job #161000) | Cod sursa (job #3174694) | Cod sursa (job #1594901) | Cod sursa (job #352459) | Cod sursa (job #3163577)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
#define MaxL 1000000
int pi[MaxL];
char s[MaxL];
int main()
{
ifstream in("prefix.in");
ofstream out("prefix.out");
int i, n, res=0, k=0, cnt=0, cnt2=0, j;
char ch;
in>>n;
for(j=0; j<n; j++)
{
in>>s;
k=0; res=0;
for(i=1; i<strlen(s); i++)
{
while(k!=0 && s[k]!=s[i])
{
k=pi[k-1];
}
if(s[k]==s[i])
{
k++;
}
pi[i]=k;
if(pi[i]>0 && (i+1)%(i+1-pi[i])==0)
res=i+1;
}
out<<res<<'\n';
}
return 0;
}