Pagini recente » Cod sursa (job #1649458) | Cod sursa (job #1170558) | Cod sursa (job #3170448) | Cod sursa (job #529259) | Cod sursa (job #2718725)
#include <bits/stdc++.h>
using namespace std;
ifstream f("prefix.in"); ofstream g("prefix.out");
char sir[1000002];
int t,kmp[1000002];
int build_kmp(char str[])
{ int n=strlen(str);
kmp[1]=0;
for(int k=0,i=2;i<=n;i++)
{ while(k>0 && str[i-1]!=str[k]) k=kmp[k];
if(str[i-1]==str[k]) k++;
kmp[i]=k;
}
for(int i=n;i;i--)
if(kmp[i] && i%(i-kmp[i])==0) return i;
return 0;
}
int main()
{ f>>t;
while(t--)
{ f.getline(sir,1000002);
g<<build_kmp(sir)<<'\n';
}
g.close(); return 0;
}