Pagini recente » Cod sursa (job #1451891) | Cod sursa (job #3037536) | Cod sursa (job #1310028) | Cod sursa (job #465042) | Cod sursa (job #2226238)
#include <bits/stdc++.h>
using namespace std;
const int maxs = 1e6 + 5;
char s[maxs];
int pi[maxs];
int main() {
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int T;
fin >> T;
for(int z = 1;z <= T;z++) {
fin >> s + 1;
// cerr << s + 1 << "\n";
int n = strlen(s + 1);
while(!isalpha(s[n]))
n--;
pi[1] = 0;
int k = 0;
for(int i = 2;i <= n;i++) {
while(k && s[i] != s[k + 1])
k = pi[k];
if(s[i] == s[k + 1])
k++;
pi[i] = k;
}
int maxi = 0;
for(int i = 2;i <= n;i++) {
if(pi[i] != 0 && i % (i - pi[i]) == 0)
maxi = i;
}
fout << maxi << "\n";
}
fin.close();
fout.close();
return 0;
}