Pagini recente » Cod sursa (job #1734939) | Cod sursa (job #2837495) | Cod sursa (job #3155681) | Cod sursa (job #2835387) | Cod sursa (job #2729450)
#include <bits/stdc++.h>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
const int N=1e6+10;
char s[N];
int pred[N];
int main()
{
int t;
f>>t;
for(int r=1;r<=t;r++)
{
f>>(1+s);
int m=strlen(1+s),lung=0;
for(int i=2;i<=m;i++)
{
while(lung>0 && s[i]!=s[lung+1])
{
lung=pred[lung];
}
if(s[i]==s[lung+1])
{
lung++;
}
pred[i]=lung;
}
int rez=0;
for(int i=1;i<=m;i++)
{
if(pred[i]!=0 && i%(i-pred[i])==0)
{
rez=i;
}
}
g<<rez<<"\n";
}
return 0;
}