Pagini recente » Cod sursa (job #3252659) | Profil judy_k | Cod sursa (job #3298273) | Cod sursa (job #2296515) | Cod sursa (job #2717301)
#include <bits/stdc++.h>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
// #define f cin
// #define g cout
void solve()
{
static int pref[1000001];
static string a;
string s("#");
static int n;
int maxim = 0;
f >> a;
n = a.size();
s += a;
pref[1] = 0;
for (int i = 2; i <= n; i++)
{
pref[i] = pref[i - 1];
while (pref[i] && s[i] != s[pref[i] + 1])
pref[i] = pref[pref[i]];
if (s[i] == s[pref[i] + 1])
pref[i]++;
if (pref[i] && i % (i - pref[i]) == 0)
maxim = max(maxim, i);
}
g << maxim << '\n';
}
int main()
{
int q;
f >> q;
while (q--)
solve();
return 0;
}