Pagini recente » Cod sursa (job #2816327) | Cod sursa (job #1650909) | Cod sursa (job #2974242) | Cod sursa (job #3300339) | Cod sursa (job #2789341)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
#define MAXL 1000006
string str;
int t, urmator[MAXL];
void kmp(){
int k = 0, m = str.length(), res = 0;
for (int i=2;i<=m;i++){
while(k > 0 && str[k] != str[i - 1]){
k = urmator[k];
}
if (str[k] == str[i - 1])
k ++;
urmator[i] = k;
if (i % (i - urmator[i]) == 0 && urmator[i] != 0){
res = i;
}
}
fout << res << '\n';
}
int main() {
fin >> t;
while(t--){
fin >> str;
kmp();
}
return 0;
}