Pagini recente » Cod sursa (job #1910116) | Cod sursa (job #139186) | Cod sursa (job #148291) | Cod sursa (job #806582) | Cod sursa (job #1226585)
#include<cstdio>
#include<vector>
using namespace std;
char A[2000001];
int i,pre,k[2000001],nr,l,t,test;
vector <int> v;
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d\n",&t);
for(test=1;test<=t;test++)
{
gets(A);
int n=1;
for(i=1;A[i]!=0;i++)
{
n++;
pre=k[i-1];
while(A[pre]!=A[i]&&pre>0)
{
pre=k[pre-1];
}
if(A[i]!=A[pre])
k[i]=0;
else
k[i]=pre+1;
if(2*k[i]==i+1)
{
l=(i+1)/2;
nr=2;
}
else if(l!=0&&k[i]!=0&&k[i]%l==0&&(2*k[i]-i-1)%l==0&&k[i]*2>=i)
{
nr++;
}
}
printf("%d\n",nr*l);
}
return 0;
}