Cod sursa(job #2452020)
| Utilizator | Data | 29 august 2019 10:13:02 | |
|---|---|---|---|
| Problema | Prefix | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.68 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int t,i,n,l,j,k,urm[1000005],p[1000005];
char s[1000005];
int main()
{
f>>t;
for(i=1; i<=t; ++i)
{
f>>(s+1);
l=strlen(s+1);
k=0;
for(j=2; j<=l; ++j)
{
while(k && s[j]!=s[k+1])k=p[k];
if(s[k+1]==s[j])++k;
urm[j]=k;
}
for(j=l; j>=1; --j)
{
if(urm[j]!=0 && j%(j-urm[j])==0)
{
g<<j<<'\n';
break;
}
}
if(j==1)g<<0<<'\n';
if(j==0)g<<0<<'\n';
}
return 0;
}
