Cod sursa(job #2581052)
| Utilizator | Data | 14 martie 2020 14:33:28 | |
|---|---|---|---|
| Problema | Prefix | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.57 kb |
#include <bits/stdc++.h>
#define N 1000005
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int pi[N],m,n,cnt,t;
char a[N];
int main()
{
fin>>t;
for(int p=1;p<=t;p++)
{
fin>>a+1;
n=strlen(a+1);
int maxim=0,q=0;
pi[1]=0;
for(int i=2;i<=n;i++)
{
while (q && a[q+1] != a[i])
q=pi[q];
if (a[q+1]==a[i])q++;
pi[i] = q;
if(pi[i]!=0&&pi[i]%(i-pi[i])==0)maxim=i;
}
fout<<maxim<<'\n';
}
}
