Pagini recente » Cod sursa (job #1558051) | Monitorul de evaluare | Clasament dupa rating | Monitorul de evaluare | Cod sursa (job #2592743)
#include <bits/stdc++.h>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int n, m;
int q, ans;
string s;
int pi[1000005];
void Read()
{
f>>n;
for(int i = 1;i <= n;++i)
{
f>>s;
m = s.length();
memset(pi, 0, sizeof(pi));
ans = 0;
q = 0;
for(int j = 2;j <= m;++j)
{
while(q && s[q + 1] != s[j])
q = pi[q];
if(s[q + 1] == s[j])
++q;
pi[j] = q;
if(pi[j] != 0 && (pi[j] % (j - pi[j]) == 0))
ans = j;
}
g<<ans<<'\n';
}
}
int main()
{
Read();
return 0;
}