Pagini recente » Cod sursa (job #33218) | Cod sursa (job #2101697) | Cod sursa (job #1778611) | Cod sursa (job #449405) | Cod sursa (job #1675428)
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e6 + 7;
char s[MAXN];
int pi[MAXN];
int answer()
{
int n = strlen(s+1);
int ans = 0;
memset(pi, 0, sizeof pi);
pi[1] = 0;
for(int i = 2, q = 0; i <= n; ++i)
{
while(q && s[q + 1] != s[i])
q = pi[q];
if(s[q + 1] == s[i]) ++ q;
pi[i] = q;
if(i % (i - pi[i]) == 0 && pi[i]) ans = i;
}
return ans;
}
int main()
{
ifstream cin("prefix.in");
ofstream cout("prefix.out");
int t; cin >> t;
while(t--)
{
cin >> (s + 1);
cout << answer() << '\n';
}
return 0;
}