Pagini recente » Cod sursa (job #1456866) | Cod sursa (job #2895421) | Cod sursa (job #2873649) | Cod sursa (job #1158128) | Cod sursa (job #3163579)
#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;
}
for(i=1; i<strlen(s); i++) pi[i]=0;
out<<res<<'\n';
}
return 0;
}