Pagini recente » Cod sursa (job #320701) | Cod sursa (job #435257) | Cod sursa (job #1005368) | Cod sursa (job #1739284) | Cod sursa (job #2101369)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fi("prefix.in");
ofstream fo("prefix.out");
const int NMAX=1e7+5;
int S[NMAX],t,n,k;
string A;
int main()
{
fi>>t;
while(t--)
{
fi>>A;
n=A.size();
A="#"+A;
S[0]=-1;
S[1]=0;
k=0;
for(int i=2;i<=n;i++)
{
while(k>0 && A[i]!=A[k+1])
k=S[k];
if(A[i]==A[k+1])
k++;
S[i]=k;
}
int rez=0;
for(int i=1;i<=n;i++)
if(S[i] && i%(i-S[i])==0)
rez=i;
fo<<rez<<"\n";
}
fi.close();
fo.close();
return 0;
}