Pagini recente » Cod sursa (job #1102406) | Cod sursa (job #1300784) | Cod sursa (job #330319) | Cod sursa (job #2673785) | Cod sursa (job #2562221)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in") ;
ofstream fout("prefix.out") ;
vector<int> prefix(string sir)
{
int n , i , j ;
n = sir.size() ;
vector<int> pr(n);
pr[0] = 0 ;
for ( i = 1 ; i < n ; i++ )
{
j = pr[i-1] ;
while ( j > 0 && sir[i] != sir[j] )
j = pr[j-1] ;
if ( sir[i] == sir[j] )
j++ ;
pr[i] = j ;
}
return pr ;
}
int main()
{
int t,sol,n,i;
string s;
vector<int> v;
fin >> t ;
while ( t-- )
{
fin >> s ;
v = prefix(s) ;
n = s.size() ;
sol = 0;
for ( i = n-1 ; i > 0 ; i-- )
{
if ( (i+1)%(i+1-v[i]) == 0 && v[i] )
{
sol = i+1 ;
break ;
}
}
fout << sol << '\n' ;
}
}