Pagini recente » Cod sursa (job #2131647) | Cod sursa (job #1906021) | Cod sursa (job #3234505) | Cod sursa (job #1251659) | Cod sursa (job #1457747)
#include <fstream>
#include <string.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.get();
while(T--)
{
fin.get(S,Dim);
fin.get();
P[0] = 0;
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;
}