Pagini recente » Cod sursa (job #1154086) | Cod sursa (job #1675878) | Cod sursa (job #302243) | Cod sursa (job #28365) | Cod sursa (job #2953143)
#include <bits/stdc++.h>
#define L 1000005
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
string s;
int pi[L];
void KMP(){
pi[0] = 0;
int k = 0;
for (int i = 1; i < (int)s.size(); i++){
while (k > 0 && s[k] != s[i])
k = pi[k - 1];
if (s[k] == s[i])
k++;
pi[i] = k;
}
}
int main(){
int n;
fin >> n;
for (int i = 1; i <= n; i++){
fin >> s;
KMP();
int ans = 0;
for (int j = 2; j <= (int)s.size(); j++)
if (pi[j - 1] != 0 && j % (j - pi[j - 1]) == 0)
ans = j;
fout << ans << "\n";
}
return 0;
}