Pagini recente » Cod sursa (job #2722253) | Cod sursa (job #198697) | Cod sursa (job #130950) | Cod sursa (job #1814716) | Cod sursa (job #1628424)
#include <iostream>
#include <fstream>
#include <string.h>
#include <string>
using namespace std;
const int Nmax = 1000666;
string A;
int T, ans = 0, m[Nmax], q;
int main() {
ifstream fin ("prefix.in");
ofstream fout ("prefix.out");
fin >> T;
while(T--) {
fin >> A;
ans = 0;
m[0] = -1;
q = -1;
for (size_t k = 1; k < A.size(); ++k) {
while(q >= 0 && A[k] != A[q+1])
q = m[q];
if (A[k] == A[q+1])
++q;
m[k] = q;
}
for (int k = A.size() -1; k >= 0; --k) {
if (m[k] >= 0 && ((k+1) % (k - m[k]) == 0)) {
ans = k+1;
break;
}
}
fout << ans << '\n';
}
return 0;
}