Pagini recente » Cod sursa (job #3263814) | Cod sursa (job #51232) | Cod sursa (job #3256222) | Cod sursa (job #3162621) | Cod sursa (job #791971)
Cod sursa(job #791971)
#include <fstream>
#define NMAx 1000100
using namespace std;
char S[NMAx];
int T,Fail[NMAx];
int Solve() {
int i,e;
Fail[1]=0;
for(i=2,e=0;S[i];i++) {
while(e && S[e+1]!=S[i])
e=Fail[e];
if(S[e+1]==S[i])
++e;
Fail[i]=e;
}
for(i--;i;i--)
if(Fail[i] && i%(i-Fail[i])==0)
return i;
return 0;
}
int main() {
ifstream in("prefix.in");
ofstream out("prefix.out");
in>>T;
in.getline(S,1);
while(T--) {
in.getline(S+1,NMAx);
out<<Solve()<<'\n';
}
in.close();
out.close();
return 0;
}