Pagini recente » Cod sursa (job #1090872) | skibidi | Cod sursa (job #868586) | Istoria paginii runda/simulare-cartita-52b/clasament | Cod sursa (job #1561860)
#include <iostream>
#include <fstream>
#include <cstring>
#define MAXN 1000050
using namespace std;
char s[MAXN];
int pi[MAXN], n, t;
void solve()
{
int k, i, maxi;
pi[1] = k = maxi = 0;
for (int i = 2; i <= n; ++i) {
while (s[i-1] != s[k] && k)
k = pi[k];
if (s[i-1] == s[k])
k++;
pi[i] = k;
}
for (int i = n; i; --i)
if (pi[i]<<1 >= i && pi[i]%(i-pi[i]) == 0)
maxi = i, i = 1;
printf("%d\n", maxi);
}
int main()
{
ifstream fin("prefix.in");
freopen("prefix.out", "w", stdout);
fin >> t;
for (int i = 1; i <= t; ++i)
{
fin >> s;
n = strlen(s);
solve();
}
return 0;
}