Pagini recente » Cod sursa (job #1760129) | Cod sursa (job #3157114) | Cod sursa (job #1451164) | Monitorul de evaluare | Cod sursa (job #1252798)
#include <cstdio>
#include <cstring>
#include <ctime>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
int T, n, i, k, pi[1000005];
char s[1000005];
int main()
{
freopen("prefix.in", "r", stdin);
freopen("prefix.out", "w", stdout);
scanf("%d\n", &T);
while(T--)
{
gets(s+1);
n=strlen(s+1);
pi[1]=0;k=0;
for(i=2;i<=n;i++)
{
while(k>0&&s[i]!=s[k+1]) k=pi[k];
if(s[i]==s[k+1]) k++;
pi[i]=k;
}
for(i=n;i>=1;i--)
if(pi[i]&&(i%(i-pi[i])==0))
{
printf("%d\n", i);
break;
}
if(i==0) printf("0\n");
}
return 0;
}