Pagini recente » Cod sursa (job #2486319) | Cod sursa (job #2281764) | Cod sursa (job #2376157) | Cod sursa (job #2987715) | Cod sursa (job #1308769)
# include <bits/stdc++.h>
using namespace std;
char s[1000005];
int p[1000005];
int KMP(void)
{
int n = strlen(s+1);
p[1] = 0;
for (int i=2,k=0;i <= n;++i)
{
while (k && s[k+1] != s[i]) k=p[k];
k+=(s[k+1] == s[i]);p[i] = k;
}
for (int i = n;i;--i) if (!(i % (i - p[i])) && p[i]) return i;
return 0;
}
int main(void)
{
int t;
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d\n",&t);
while (t --)
{
scanf("%s\n",s+1);
printf("%d\n",KMP());
}
return 0;
}