Pagini recente » Cod sursa (job #1013034) | Cod sursa (job #132057) | Cod sursa (job #2562953) | Cod sursa (job #1931449) | Cod sursa (job #1573330)
#include<fstream>
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
char s[1000010];
int prefix[1000010];
int main()
{
int T;
in >> T;
while (T--)
{
in >> s;
int mx = 0;
int j = 0;
for (int i = 1; s[i] != '\0'; ++i)
{
while (j > 0 && s[j] != s[i])
j = prefix[j - 1];
if (s[j] == s[i])
++j;
prefix[i] = j;
if (prefix[i] * 2 == (i + 1) && i + 1 > mx)
mx = i + 1;
else if (mx>0 && prefix[i] * 2 > (i + 1) && prefix[i]%mx==0 && i + 1 > mx)
mx = i + 1;
}
out << mx << '\n';
}
return 0;
}