Pagini recente » Cod sursa (job #1985708) | Cod sursa (job #412115) | Cod sursa (job #1408121) | Cod sursa (job #1858835) | Cod sursa (job #777882)
Cod sursa(job #777882)
#include <fstream>
using namespace std;
const int kMaxN = 1000005;
int Pi[kMaxN], L;
char S[kMaxN];
ifstream fin("prefix.in");
ofstream fout("prefix.out");
inline void KMP() {
Pi[1] = 0;
for (int i = 2, k = 0; S[i]; ++i) {
while (k && S[k+1] != S[i])
k = Pi[k];
k += (S[k+1] == S[i]);
Pi[i] = k;
if (k && i%(i-k) == 0)
L = i;
}
}
inline void Read() {
L = 0;
fin.getline(S+1, kMaxN);
}
inline void Print() {
fout << L << "\n";
}
int main() {
int T; fin >> T; fin.get();
for (; T; --T) {
Read();
KMP();
Print();
}
return 0;
}