Pagini recente » Cod sursa (job #1287666) | Cod sursa (job #3185527) | Cod sursa (job #980861) | Cod sursa (job #326222) | Cod sursa (job #854704)
Cod sursa(job #854704)
#include <fstream>
#include <cstring>
#define NM 1000010
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int T;
string S;
int N;
int i,j;
int PI[NM];
int main ()
{
for (f >> T; T; --T)
{
f >> S;
N=S.size();
S=' '+S;
memset(PI, 0, sizeof(PI));
for (i=2, j=0; i<=N; i++)
{
while (j!=0 && S[j+1]!=S[i])
j=PI[j];
if (S[j+1]==S[i]) j++;
PI[i]=j;
}
for (i=N; i>=1; i--)
if (PI[i]!=0 && i%(i-PI[i])==0)
break;
g << i << '\n';
}
f.close();
g.close();
return 0;
}