Pagini recente » Cod sursa (job #1330683) | Cod sursa (job #1265814) | Cod sursa (job #1504920) | Cod sursa (job #2742449) | Cod sursa (job #2034984)
#include<fstream>
#include<string.h>
using namespace std;
ifstream fi("prefix.in");
ofstream fo("prefix.out");
int t,T,n,rez,i,k,l,S[1000002];
char C[1000002];
int main()
{
fi>>T;
for(t=1; t<=T; t++)
{
fi>>C+1;
n=strlen(C+1);
S[0]=-1;
S[1]=0;
rez=0;
for(i=2; i<=n; i++)
{
k=i-1;
while(S[k]!=-1 && C[S[k]+1]!=C[i])
k=S[k];
if(S[k]==-1)
S[i]=0;
else
S[i]=S[k]+1;
//calculez lungimea perioadei
l=i-S[i];
if(i%l==0 && l!=i)
{
rez=i;
}
}
fo<<rez<<"\n";
}
fi.close();
fo.close();
return 0;
}