Pagini recente » Cod sursa (job #960317) | Cod sursa (job #1686401) | Cod sursa (job #1419281) | Cod sursa (job #1091183) | Cod sursa (job #3163563)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
#define nmax 1000000
int pi[nmax];
vector <int> v;
int main() {
string s;
ifstream cin("prefix.in");
ofstream cout("prefix.out");
int i, k, tst, n, m, x, rez, ok;
cin >> m;
for( tst = 0; tst < m; tst++ ) {
cin >> s;
rez = 0;
ok = 0;
k = 0;
n = s.size();
for( i = 1; i < n; i++ ) {
while( k != 0 && s[k] != s[i] )
k = pi[k-1];
if( s[k] == s[i] )
k++;
pi[i] = k;
if( pi[i] > 0 )
ok = 1;
if( ok == 1 && pi[i] == 0 )
break;
x = i+1 - pi[i];
if( (i+1)%x == 0 )
rez = i+1;
}
cout << rez << "\n";
s.clear();
}
return 0;
}