Pagini recente » Cod sursa (job #1385853) | Cod sursa (job #1501844) | Istoria paginii utilizator/mihaescurazvan | Cod sursa (job #672806) | Cod sursa (job #1457746)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
const int Dim = 1000001;
int T,P[Dim],Sol;
char S[Dim];
int main()
{
fin >> T;
fin.getline(S,Dim);
while(T--)
{
fin.getline(S,Dim);
memset(P,0,sizeof(P));
Sol = 0;
int N = strlen(S),it = 0;
for (int i = 1;i < N;i++)
{
while(it && S[it] != S[i])
it = P[it - 1];
if (S[it] == S[i])
it++;
P[i] = it;
if (P[i] && !((i + 1) % (i + 1 - P[i])))
Sol = i + 1;
}
fout << Sol << "\n";
}
return 0;
}