Pagini recente » Cod sursa (job #2483428) | Cod sursa (job #2168147) | Cod sursa (job #1703890) | Cod sursa (job #2487673) | Cod sursa (job #1193414)
#include <cstdio>
#include <cstring>
using namespace std;
#define NMAX 1000005
int pi[NMAX];
int T;
char S[NMAX];
int solve()
{
int i,k=0,N=strlen(S+1);
memset(pi,0,sizeof(pi));
for (i=2;i<=N;++i)
{
while (k && S[k+1]!=S[i]) k=pi[k];
if (S[k+1]==S[i]) ++k;
pi[i]=k;
}
for (i=N;i>=2;--i)
{
if (!pi[i] || !(i-pi[i])) continue;
if (i%(i-pi[i])) continue;
return i;
}
return 0;
}
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d\n",&T);
while (T--)
{
gets(S+1);
printf("%d\n",solve());
}
return 0;
}