Pagini recente » Cod sursa (job #1271374) | Cod sursa (job #2882785) | Cod sursa (job #660717) | Cod sursa (job #1497221) | Cod sursa (job #2148766)
#include<bits/stdc++.h>
using namespace std;
int n,k,p,m,ras,phi[10000];
char s[1000];
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d\n",&n);
for(int j = 1; j <= n; j ++)
{
gets(s+1);
m = strlen(s+1);
k = 0;
phi[1] = 0;
p = 1;
for(int i = 2; i <= m; i ++)
{
while(k>0 && s[i] != s[k+1])
k = phi[k];
if(s[i] == s[k+1])k++;
phi[i] = k;
}
k = 1;
for(int i = 2; i <= m; i ++)
if(phi[i] != phi[i-1] + 1)
{
if(phi[i] == 0) k = i;
else k = i-1;
}
else if(i%k == 0) ras = i;
printf("%d \n",ras);
}
return 0;
}