Pagini recente » Cod sursa (job #3348012) | Cod sursa (job #3349376) | Cod sursa (job #3333733) | Cod sursa (job #3330259) | Cod sursa (job #3338147)
#include <bits/stdc++.h>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
char s[1000009];
int lps[1000009];
signed main ()
{
int t;
f >> t;
f.get();
while (t--)
{
f.getline (s+1, 1000001);
int n=strlen (s+1);
for (int i=1; i<=n; i++)
lps[i]=0;
int x=0;
for (int i=2; i<=n; i++)
{
x=lps[i-1];
while (x!=0 && s[x+1]!=s[i])
x=lps[x];
if (s[x+1]==s[i])
lps[i]=x+1;
}
//cout << lps[19] << ' ';
int ans=0;
for (int i=1; i<=n; i++)
{
if (lps[i] && i%(i-lps[i])==0)
ans=i;
}
g << ans << '\n';
}
}