Pagini recente » Cod sursa (job #1670024) | Cod sursa (job #741941) | Cod sursa (job #334186) | Cod sursa (job #1582442) | Cod sursa (job #574595)
Cod sursa(job #574595)
#include<stdio.h>
#include<string.h>
using namespace std;
FILE*f=fopen("prefix.in","r");
FILE*g=fopen("prefix.out","w");
int i,nr,t,x,p[1000005];
char v[1000006];
void prep(int x){
int k=0;
p[1]=0;
for(i=2;i<=x;++i){
while(k>0&&v[k+1]!=v[i])
k=p[k];
if(v[k+1]==v[i])
++k;
p[i]=k;
if(p[i]%(i-p[i])==0&&p[i])
nr=i;
}
}
int main() {
fscanf(f,"%d\n",&t);
for(int o=1;o<=t;++o){
fscanf(f,"%s\n",v+1);
v[0]='a';
x=strlen(v)-1;
v[0]=0;
nr=0;
prep(x);
fprintf(g,"%d\n",nr);
}
fclose(g);
fclose(f);
return 0;
}