Pagini recente » Cod sursa (job #1167306) | Borderou de evaluare (job #1036630) | Cod sursa (job #859040) | Cod sursa (job #2503979) | Cod sursa (job #482525)
Cod sursa(job #482525)
#include<algorithm>
using namespace std;
#define DIM 1000005
char s[DIM];
int prefix[DIM];
inline void test ()
{
int i,n,q=0,sol=0;
gets (1+s);
n=strlen(1+s);
for(i=1;i<=n;++i)
prefix[i]=0;
for(i=2;i<=n;++i)
{
while(q>0 && s[q+1]!=s[i])
q=prefix[q];
if(s[q+1]==s[i])
++q;
prefix[i]=q;
if(q>0 && !(i%(i-q)))
sol=i;
}
printf("%d\n",sol);
}
int main ()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
int i,n;
scanf("%d\n",&n);
for(i=1;i<=n;++i)
test ();
return 0;
}