Pagini recente » Cod sursa (job #1451684) | Cod sursa (job #286914) | Cod sursa (job #1294858) | Cod sursa (job #2688066) | Cod sursa (job #2581043)
#include <bits/stdc++.h>
#define N 1000005
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int pi[N],m,n,cnt,t;
char a[N];
int prefix()
{
int i, q = 0, maxim = 0;
pi[1] = 0;
for (i = 2 ; i <= n; ++i)
{
while (q && a[q+1] != a[i])
{
q = pi[q];
}
if (a[q+1] == a[i])
{
++q;
}
pi[i] = q;
if(pi[i]!=0&&pi[i]%(i-pi[i])==0)maxim=i;
}
return maxim;
}
int main()
{
fin>>t;
char car;
fin>>noskipws>>car;
for(int q=1;q<=t;q++)
{
n=0;
char car;
fin>>noskipws>>car;
while(car!='\n')
{
a[++n]=car;
fin>>noskipws>>car;
}
fout<<prefix()<<'\n';
}
}