Pagini recente » Cod sursa (job #1466101) | Cod sursa (job #287255) | Cod sursa (job #255116) | Cod sursa (job #3175243) | Cod sursa (job #1200489)
#include <cstdio>
#include <cstring>
#define Nmax 1000005
using namespace std;
char a[Nmax];
int N,pi[Nmax],dp[Nmax];
inline void Pi()
{
int k=0,i;
pi[1]=0;
for(i=2;i<=N;++i)
{
while(k && a[k+1]!=a[i])
k=pi[k];
if(a[k+1]==a[i])
++k;
pi[i]=k;
}
for(i=2;i<=N;++i)
dp[i]=i-pi[i];
}
int main()
{
int T,i,sol;
freopen ("prefix.in","r",stdin);
freopen ("prefix.out","w",stdout);
scanf("%d", &T);
while(T--)
{
scanf("%s", (a+1));
N=strlen(a+1);
Pi();
for(sol=0,i=2;i<=N;++i)
if(pi[i] && i%dp[i]==0)
sol=i;
printf("%d\n", sol);
}
return 0;
}