Pagini recente » Cod sursa (job #42949) | Cod sursa (job #2864845) | Cod sursa (job #283978) | Cod sursa (job #1632617) | Cod sursa (job #2108676)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
const int MAX=1000002;
int t,l,q,i,n,j,poz,k,urm[MAX];
char s[MAX];
void prefix(){
k=0;
urm[1]=0;
t=strlen(s);
for(q=2 ; q<=t ; ++q)
{
while(k>0&&s[q]!=s[k+1])
k=urm[k];
if(s[q]==s[k+1])
k++;
urm[q]=k;
}
}
int main()
{
f>>n;
for(i=1;i<=n;++i)
{
f>>s+1;
s[0]='*';
k=0;
poz=0;
prefix();
l=strlen(s);
for(j=1;j<=l;++j)
if(urm[j]&&j%(j-urm[j])==0)
poz=j;
g<<poz<<'\n';
}
return 0;
}