Pagini recente » Cod sursa (job #1372696) | Cod sursa (job #267190) | Cod sursa (job #1042486) | Cod sursa (job #3261400) | Cod sursa (job #2550973)
#include <bits/stdc++.h>
#define N 1000005
using namespace std;
ifstream fin ("prefix.in");
ofstream fout ("prefix.out");
int urm[N];
int main()
{
int t, n, j, k, sol;
char v[N];
fin>>t;
fin.get();
for (int i=1; i<=t; ++i)
{
fin.getline(v+1, N);
n=strlen(v+1);
k=0;
sol=0;
for (j=2; v[j]; ++j)
{
while (k>0 && v[j]!=v[k+1])
k=urm[k];
if (v[j]==v[k+1]) k++;
urm[j]=k;
if (urm[j]!=0 && j%(j-urm[j])==0)
sol=j;
}
fout<<sol<<'\n';
}
fin.close();
fout.close();
return 0;
}