Pagini recente » Cod sursa (job #2497715) | Cod sursa (job #1079205) | Cod sursa (job #1233683) | Cod sursa (job #133816) | Cod sursa (job #1184650)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
char sir[1000003];
int urm[1000003];
int len;
void genereazaUrmatorul()
{
int k = 0, i;
urm[1] = 0;
for (i = 2; i <= len; i++)
{
while (k > 0 && sir[k + 1] != sir[i])
{
k = urm[k];
}
if (sir[k + 1] == sir[i])
{
k++;
}
urm[i] = k;
}
}
int main()
{
ifstream in("prefix.in");
ofstream out("prefix.out");
int T , i , q , z;
in >> T;
sir[0] = 'a';
while (T--)
{
in >> (sir + 1);
len = strlen(sir) - 1;
genereazaUrmatorul();
i = 1;
q = 0;
for (i = len; i >= 1; i--)
{
if (urm[i] != 0 && i % (i - urm[i]) == 0)
{
goto end;
}
}
end:
out << i << '\n';
}
in.close();
out.close();
return 0;
}