Pagini recente » Cod sursa (job #1931578) | Cod sursa (job #684613) | Cod sursa (job #1909777) | Cod sursa (job #3181815) | Cod sursa (job #1492150)
#include<fstream>
#include<cstring>
using namespace std;
ifstream f("prefix.in"); ofstream g("prefix.out");
const int nmax = 1000004;
int t,d[nmax];
char p[nmax];
void Solve()
{ f>>(p+1);
int n=strlen(p+1);
for(int i=2,k=0; i<=n; ++i)
{ while (k && p[k+1] != p[i]) k=d[k];
if(p[k+1]==p[i]) ++k;
d[i]=k;
}
for(int i=n; i; --i)
if(d[i] && i % (i-d[i])==0) {g<<i<<'\n'; return;}
g<<"0\n";
}
int main()
{ f>>t;
while(t--) Solve();
g.close(); return 0;
}