Pagini recente » Cod sursa (job #2865276) | Cod sursa (job #3314527) | Cod sursa (job #3312833) | Cod sursa (job #3330720) | Cod sursa (job #3346450)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
const int nmax = 1e6+2;
void solve();
string s;
int n, kmp[nmax];
int main()
{
int t;
fin>>t;
while(t--)
solve();
return 0;
}
void solve()
{
fin>>s;
n = s.size();
s = "@" + s;
for(int i = 1; i <= n; ++i)
kmp[i] = 0;
int best = 0;
for(int i = 2; i <= n; ++i)
{
int l = kmp[i-1];
while(l > 0 && s[i] != s[l+1])
l = kmp[l];
if(s[i] == s[l+1])
++l;
kmp[i] = l;
if(kmp[i] > 0 && i % (i - kmp[i]) == 0)
best = max(best, i);
}
fout<<best<<"\n";
}