Pagini recente » Cod sursa (job #1649282) | Cod sursa (job #1345064) | Rating Iosif Zota (kaenan) | Cod sursa (job #1369151) | Cod sursa (job #745183)
Cod sursa(job #745183)
#include<fstream>
#include<cstring>
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
#define N 1000003
char c[N];
int n,p[N],t;
void pref() {
p[1] = 0;
int k = 0,i;
for(i = 2; i<=n; ++i) {
while(k && c[k + 1]!=c[i])
k = p[k];
if(c[k + 1] == c[i])
++k;
p[i] = k;
}
}
int af() {
for(int i = n; i; --i)
if(p[i] && !(i%(i - p[i])))
return i;
return 0;
}
int main() {
in >> t;
in.get();
while(t--) {
in.getline(c + 1,N);
n = strlen(c + 1);
pref();
out << af() << "\n";
}
return 0;
}