Pagini recente » Cod sursa (job #2798416) | Cod sursa (job #770900) | Cod sursa (job #330401) | Cod sursa (job #2397834) | Cod sursa (job #2461620)
#include <algorithm>
#include <stack>
#include <queue>
#include <deque>
#include <vector>
#include <string>
#include <set>
#include <map>
#include <cstring>
using namespace std;
//#include <iostream>
#include <fstream>
//ifstream cin ("input.in");
//ofstream cout ("output.out");
ifstream cin ("prefix.in");
ofstream cout ("prefix.out");
static const int NMAX = 1e6+5;
int pi[NMAX];
char s[NMAX];
void checkOccurence(int n) {
for ( int i = n; i >= 2; --i ) {
if ( pi[i] && !(i%(i-pi[i])) ) {
cout<<i<<'\n';
return;
}
}
cout<<0<<'\n';
}
void kmp( int n ) {
for ( int i = 2; i <= n; ++i ) {
pi[i] = pi[i-1];
while ( pi[i] && s[pi[i]+1] != s[i] ) {
pi[i] = pi[pi[i]];
}
if ( s[pi[i]+1] == s[i] ) {
pi[i]++;
}
}
checkOccurence(n);
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int t;
cin>>t;
while ( t-- ) {
cin>>(s+1);
int n = strlen(s+1);
kmp(n);
}
}