Pagini recente » Cod sursa (job #2473312) | Cod sursa (job #2465645) | Cod sursa (job #1694826) | Cod sursa (job #830914) | Cod sursa (job #2303457)
#include <bits/stdc++.h>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int nr_teste,n,phi[1000005];
char ch[1000010];
int solve()
{
f.getline(ch,1000005);
n=strlen(ch);
phi[0]=0;
int rez=0;
for(int i=1;i<n;i++)
{
while(rez>0 && ch[i]!=ch[rez])
{
rez=phi[rez-1];
}
if(ch[rez]==ch[i])rez++;
phi[i]=rez;
}
int Max=0;
for(int i=0;i<n;i++)
{
if((i+1)-phi[i]<i+1 && (i+1)%((i+1)-phi[i])==0)
{
Max=i+1;
}
}
g<<Max<<'\n';
}
int main()
{
f>>nr_teste;
f.get();
for(;nr_teste;nr_teste--)
{
solve();
}
return 0;
}