Pagini recente » Cod sursa (job #1533676) | Cod sursa (job #1659698) | Cod sursa (job #2819538) | Cod sursa (job #836342) | Cod sursa (job #3195859)
#include <iostream>
#include <fstream>
#include <cstring>
#include <vector>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
string a;
int table[1000005];
int n;
int i,k,t,r;
int main() {
fin>>t;
for (int it = 1;it<=t;++it) {
fin>>a;
n = a.length();
table[0] = 0;
k = 0;
i = 1;
r = 0;
while(i<n) {
if (a[i] == a[k]) {
k++;
table[i] = k;
i++;
} else if (k!=0) {
k = table[k-1];
} else {
table[i] = 0;
i++;
}
}
for (int i = 1;i<n;++i) {
int f1 = i+1,f2 = i+1-table[i];
if (f1 % f2 == 0 && f1/f2>1) r = f1;
}
// for (int i = 0;i<n;++i) {
// cout<<table[i]<<" ";
// }
// cout<<'\n';
fout<<r<<'\n';
}
return 0;
}