Pagini recente » Cod sursa (job #146932) | Cod sursa (job #2526899) | Cod sursa (job #2312517) | Cod sursa (job #463716) | Cod sursa (job #2554450)
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
char ch[1000001];
int pi[1000001];
int main()
{
int n,q,l,i,dif,lenfin;
in>>n;
in.get();
for(q=1;q<=n;q++)
{
in.get(ch+1,1000001);
in.get();
l=strlen(ch+1);
lenfin=0;
int now=0;
for(i=2;i<=l;i++)
{
while(now>0 && ch[now+1]!=ch[i])
{
now=pi[now];
}
if(ch[now+1]==ch[i])
{
now++;
}
pi[i]=now;
dif=i-now;
if(now!=0 && i%dif==0)
lenfin=i;
}
out<<lenfin<<'\n';
}
return 0;
}