Pagini recente » Cod sursa (job #2572439) | Cod sursa (job #547528) | Cod sursa (job #130101) | Cod sursa (job #1385282) | Cod sursa (job #1625039)
#include <fstream>
using namespace std;
const int N=1000005;
char s[N];
int pred[N];
int main()
{
ifstream in("prefix.in");
ofstream out("prefix.out");
int t,i,k,j,max;
in>>t>>ws;
for(i=1;i<=t;i++)
{
in.getline(s+1,N);
pred[1]=0;
k=0;
max=0;
for(j=2;s[j]!=0;j++)
{
while(k>0 && s[j]!=s[k+1])
k=pred[k];
if(s[j]==s[k+1])
k++;
pred[j]=k;
if(j%(j-pred[j])==0 && pred[j]!=0)
{
if(j>=max)
max=j;
}
}
out<<max<<"\n";
}
return 0;
}