Pagini recente » Cod sursa (job #1266264) | Cod sursa (job #2088427) | Cod sursa (job #2858432) | Cod sursa (job #1594717) | Cod sursa (job #1169784)
#include <fstream>
#include <cstring>
using namespace std;
int T;
char S[1000002];
int pi[1000002],N,i,k;
ifstream f("prefix.in");
ofstream g("prefix.out");
int main()
{
f>>T;
f.get();
while(T--)
{
f.get(S+1,1000001);
f.get();
N=strlen(S+1);
pi[1]=k=0;
for (i=2;i<=N;i++)
{
if ((k>0) && S[k+1]!=S[i]) k=pi[k];
if (S[k+1]==S[i]) k++;
pi[i]=k;
}
for (i=N;i>=1;i--)
if (pi[i] && i%(i-pi[i])==0) {g<<i<<'\n';break;}
if (i==0) g<<"0"<<'\n';
}
f.close();
g.close();
return 0;
}