Pagini recente » Cod sursa (job #2053133) | Cod sursa (job #2360111) | Cod sursa (job #1243358) | Cod sursa (job #3180983) | Cod sursa (job #966253)
Cod sursa(job #966253)
#include<cstdio>
#include<cstring>
using namespace std ;
#define maxn 100001
char sir[maxn] ;
int len ;
int pi[maxn] ;
void prefix()
{
int k = 0 ;
int poz = 2 ;
pi[0] = 0 ;
while( sir[poz] != NULL )
{
while( k && sir[ k + 1 ] != sir[poz] )
k = pi[k] ;
if( sir[ k + 1 ] == sir[poz] )
++k ;
pi[poz] = k ;
++poz ;
}
}
int main()
{
freopen("prefix.in", "r", stdin);
freopen("prefix.out", "w", stdout);
int tst ;
scanf("%d\n", &tst);
while( tst-- )
{
gets( sir + 1 ) ;
len = strlen( sir + 1 ) ;
prefix() ;
bool ok = false ;
for(int i = len; i >= 0; --i )
{
if( pi[i] && i % ( i - pi[i] ) == 0 )
{
printf("%d\n", i) ;
ok = true ;
break ;
}
}
if( ok == false )
printf("0\n") ;
}
return 0 ;
}