Pagini recente » Cod sursa (job #2008694) | Cod sursa (job #2819640) | Istoria paginii usaco-ian-2005-divizia-gold | Cod sursa (job #294946) | Cod sursa (job #2004367)
#include <iostream>
#include <cstring>
#include <fstream>
#define NMax 1000010
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
char A[NMax];
int pi[NMax];
int N,i,T;
void make_prefix(int N)
{
int q=0,max1=0,sol=0;
for(int i=1;i<=N;i++)
pi[i]=0;
for(int 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)
{
if(i%(i-pi[i])==0)
sol=i;
}
}
g<<sol<<"\n";
}
int main()
{
f>>T;
while(T!=0)
{
N=0;
f>>A;
for(;(A[N]>='A' && A[N]<='Z') || (A[N]>='a' && A[N]<='z') || (A[N]>='0' && A[N]<='9');++N);
for(i=N;i>=1;i--)
A[i]=A[i-1];
A[0]=' ';
make_prefix(N);
T--;
}
}