Cod sursa(job #2288956)

Utilizator aditzu7Adrian Capraru aditzu7 Data 24 noiembrie 2018 09:52:16
Problema Reguli Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <stdio.h>
#include <string.h>
#include <fstream>
FILE*f=fopen("prefix.in","r");
FILE*g=fopen("prefix.out","w");

using namespace std;
char v[2000005],a[2000005];
int t,j,sol[100004],nr,i,k,p[2000005];
int main()
{
    fscanf(f,"%d\n",&t);
 for(int ww=1;ww<=t;ww++){
    fscanf(f,"%s",v+1);
    int n=strlen(v+1);
k=0;
for(int i=2;i<=n;i++)
   {

    while(k&&v[k+1]!=v[i])
    k=p[k];

if(v[k+1]==v[i]) k++;
p[i]=k;
   }
   for(j=n;j>=1;j--){
    if(p[j]!=0&&j%(j-p[j])==0){fprintf(g,"%d\n",j);break;}
if(j==1)    fprintf(g,"0\n");
   }
 }

    return 0;
}