Pagini recente » Cod sursa (job #918752) | Cod sursa (job #1413959) | Cod sursa (job #797620) | Cod sursa (job #2663641) | Cod sursa (job #2733122)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
string s;
int lps[1000001];
int main()
{ ios::sync_with_stdio(false);
fin.tie(nullptr), fout.tie(nullptr);
int Q, j, i, ans;
fin>>Q;
while (Q--)
{ fin>>s;
j=0;
memset(lps, 0, sizeof lps);
for (i=1;i<s.size();)
if (s[i]==s[j])
{ ++j;
lps[i]=j;
++i;
}
else if (j)
j=lps[j-1];
else
++i;
ans=0;
for (i=s.size()-1;i>=0;--i)
if (lps[i] && !((i+1)%(i-lps[i]+1)))
{ ans=i+1;
break;
}
fout<<ans<<'\n';
}
fin.close();
fout.close();
return 0;
}