Pagini recente » Statistici Scortia Claudia (ScortiaClaudia) | Cod sursa (job #2702451) | Statistici Vartolomei Tudor (vtudor95) | Cod sursa (job #1983543) | Cod sursa (job #855853)
Cod sursa(job #855853)
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
#define max_n 1000005
string Pattern;
int Prefix[ max_n ];
int Number;
int n;
void solve (){
Prefix[ 0 ] = Prefix[ 1 ] = 0 ;
int k=0;
for ( int i=2; i<=n; ++i ){
while ( ( k ) && ( Pattern[ k+1 ] != Pattern[ i ] ) )
k = Prefix[k];
if ( Pattern[ k+1 ] == Pattern[ i ] )
k++;
Prefix[ i ] = k;
}
for ( int i=n; i>0; --i ){
if ( ( Prefix[ i ] ) && !( i % ( i-Prefix[ i ] ) ) ){
cout<<i<<"\n";
return ;
}
}
cout<<"0\n";
return ;
}
void read (){
cin>>Number;
while ( Number ) {
cin>>Pattern;
n = Pattern.length();
Pattern = " " + Pattern;
solve();
Number--;
}
}
int main(){
freopen ("prefix.in","r",stdin);
freopen ("prefix.out","w",stdout);
read ();
return 0;
}