Pagini recente » Cod sursa (job #1956891) | Cod sursa (job #1053117) | Cod sursa (job #156635) | Cod sursa (job #992493) | Cod sursa (job #1936514)
#include <fstream>
#include <cstring>
#define nmax 1000005
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
char s[nmax];
int n,p[nmax];
void solve()
{
int i,j;
memset(s,0,sizeof(s));
f.getline(s+1,nmax);
p[1]=0;j=0;
for (i=2;s[i];i++) {
while (j&&s[i]!=s[j+1])
j=p[j];
if (s[i]==s[j+1])
j++;
p[i]=j;
}
n=i-1;
for (i=n;i>=1;i--) {
j=i-p[i];
if (i!=j&&j&&i%j==0) {
g<<i<<'\n';
return;
}
}
g<<0<<'\n';
}
int main()
{
int t;
for (f>>t,f.get();t;t--)
solve();
return 0;
}