Pagini recente » Cod sursa (job #2613200) | Cod sursa (job #2966128) | Cod sursa (job #2626221) | Cod sursa (job #2781610) | Cod sursa (job #2808221)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
const int NMAX = 1e6;
int k[NMAX + 5], p[NMAX + 5];
int main()
{
int t, n;
string s;
fin >> t; p[1] = 1;
while(t--) {
fin >> s; n = s.length(); s = " " + s;
int res = 0;
for(int i = 2; i <= n; i++) {
k[i] = k[i - 1];
while(k[i] && s[k[i] + 1] != s[i]) k[i] = k[k[i]];
if(s[k[i] + 1] == s[i]) k[i]++;
p[i] = (k[i] && i % (i - k[i]) == 0 && i / (i - k[i]) == p[k[i]] + 1) ? p[k[i]] + 1 : 1;
if(p[i] > 1) res = max(res, i);
}
fout << res << "\n";
}
return 0;
}