Pagini recente » Cod sursa (job #1912095) | Cod sursa (job #1426049)
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
//#include <conio.h>
#define pb push_back
#define mp make_pair
#define MOD 1000000007
#define newl printf("\n")
using namespace std;
int T,n,pi[1000005];
char a[1000005];
void make_prefix()
{
pi[1]=0;
int k=0;
for (int i=2;i<=n;i++)
{
while (k>0 && a[i]!=a[k+1]) k=pi[k];
if (a[i]==a[k+1]) k++;
pi[i]=k;
}
}
int solve()
{
for (int i=n;i>0;i--)
if (pi[i] && i%(i-pi[i])==0)
return i;
return 0;
}
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d\n",&T);
while (T--)
{
gets(a+1); n=strlen(a+1);
make_prefix();
printf("%d\n",solve());
}
return 0;
}