Pagini recente » Cod sursa (job #955205) | Cod sursa (job #2604097) | Cod sursa (job #309729) | Cod sursa (job #2740021) | Cod sursa (job #1340615)
#include <fstream>
#include <cstring>
#define DIM 1000002
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int T, P[DIM], N , i , L , sol , n;
char A[DIM];
int main(){
fin >> T;
while ( T -- ){
fin >> A + 1;
P[1] = 0;
L = 0;
n = strlen(A + 1);
for( i = 2 ; i <= n ; i ++){
while (L != 0 && A[i]!=A[L+1])
L = P[L];
if(A[i] == A[L+1])
L++;
P[i] = L;
}
sol = 0;
for ( i = n ; i > 0 ;i --)
if( P[i] > 0 && i % ( i - P[i] ) == 0 ){
sol = i;
break;
}
fout<<sol<<'\n';
}
fin.close();fout.close();
return 0;
}