Pagini recente » Cod sursa (job #2291960) | Cod sursa (job #1426300) | Cod sursa (job #1892688) | Cod sursa (job #378180) | Cod sursa (job #2558451)
#include <fstream>
#include <iostream>
#include <cstring>
#define lim 1000000
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
char a[lim+5];
int p[lim+5];
int t,i,n,mx;
int main()
{
in>>t; in.get();
for(int k=1; k<=t; k++)
{
memset(p, 0, sizeof p);
in.getline(a+1, lim+5);
n=strlen(a+1);
int st = 0, rez=0;
for(i=2;i<=n;i++)
{
while(st>0 && a[st+1]!=a[i])
st = p[st];
if(a[st+1] == a[i]) st++;
p[i]=st;
if(p[i] > 0 && i%(i-p[i])==0)
rez = i;
}
out<<rez<<'\n';
}
return 0;
}