Pagini recente » Cod sursa (job #822762) | Cod sursa (job #3195610) | Cod sursa (job #1193826) | Cod sursa (job #1282870) | Cod sursa (job #163290)
Cod sursa(job #163290)
#include <cstdio>
#include <string>
#define maxn 1000002
char a[maxn];
int t[maxn];
int n;
void solve()
{
memset(t, 0,sizeof(t));
int i, k=0;
t[1]=0;
for(i=2;i<=n;++i)
{
while(k>0 && a[k+1]!=a[i]) k=t[k];
if(a[k+1]==a[i]) ++k;
t[i]=k;
}
int sol=0;
for(i=1;i<=n;++i)
if(t[i]>0 && (i%(i-t[i]))==0) sol=i;
printf("%d\n", sol);
// for(i=1;i<=n;++i)printf("%d ",t[i]);
// printf("\n");
}
int main()
{
int T,i;
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d\n", &T);
while(T--)
{
memset(a, 0,sizeof(a));
scanf("%s\n", &a);
// printf("%s\n", a);
n=0;
while(a[n]>='a' && a[n]<='z') ++n;
for(i=n;i;--i) a[i]=a[i-1];
solve();
}
return 0;
}