Pagini recente » Cod sursa (job #2867350) | Cod sursa (job #2527208) | Cod sursa (job #2522325) | Cod sursa (job #2151423) | Cod sursa (job #1403686)
#include <fstream>
#include <cstring>
using namespace std;
#define LMax 1000005
ifstream f("prefix.in");
ofstream g("prefix.out");
int pi[LMax];
char A[LMax];
int m;
void pref()
{
int i,q=0;
pi[1] = 0;
for(i=2;i<=m;++i)
{
while(q && A[q+1]!=A[i]) q=pi[q];
if(A[q+1] == A[i]) q++;
pi[i] = q;
}
}
int mx;
int main()
{
int T;
f>>T;
while(T--)
{
f>>(A+1);
m = strlen(A+1);
pref();
mx = 0;
for(int i=1;i<=m;++i) if(pi[i])
{
if(i - pi[i] == pi[i] - pi[pi[i]] && i % (i - pi[i]) == 0) mx = i;
}
g<<mx<<"\n";
}
f.close();
g.close();
return 0;
}