Pagini recente » Cod sursa (job #2926376) | Cod sursa (job #2866237) | Cod sursa (job #2381379) | Cod sursa (job #1578847) | Cod sursa (job #2048509)
#include <bits/stdc++.h>
using namespace std;
ifstream f("prefix.in"); ofstream g("prefix.out");
int nrt,phi[1000010];
char P[1000010];
int main()
{ f>>nrt;
while(nrt--)
{ f>>(P+1);
phi[1]=0;
int m=strlen(P+1),ma=0,k=0;
for(int i=2; i<=m; ++i)
{ while(k && P[k+1]!=P[i]) k=phi[k];
if(P[i]==P[k+1]) phi[i]=++k; else phi[i]=0;
if(k && i%(i-k)==0) ma=i;
}
g<<ma<<'\n';
}
return 0;
}