Pagini recente » Istoria paginii runda/oni2011-scdtry/clasament | Cod sursa (job #2620621) | Cod sursa (job #2670470) | Cod sursa (job #2112526) | Cod sursa (job #31400)
Cod sursa(job #31400)
#include<fstream.h>
#include<string.h>
#define nmax 1000003
char s[nmax];
int pref[nmax];
void prefix()
{long i,k;
pref[1]=0;
pref[0]=-1;
for(i=2;i<=strlen(s);i++)
{k=i-1;
while(s[i-1]!=s[pref[k]]&&k>0)
k=pref[k];
pref[i]=pref[k]+1;
}
}
int main()
{long t,i,j;
ifstream f("prefix.in");
ofstream g("prefix.out");
f>>t;
for(i=1;i<=t;i++)
{f>>s;
prefix();
for(j=strlen(s);j>0;j--)
if(!(j%(j-pref[j]))&&pref[j])
break;
g<<j<<"\n";
}
g.close();
return 0;
}