Pagini recente » Cod sursa (job #68774) | Cod sursa (job #1120581) | Cod sursa (job #2438642) | Cod sursa (job #645653) | Cod sursa (job #2306496)
#include <fstream>
#include <string>
#include <vector>
#define lim 1000004
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int t,pre[lim],maxim,ns;
string s;
void prefix (void)
{
int j=0;
for (int i=2;i<=s.length();i++)
{
while (j && s[j+1]!=s[i]) j=pre[j];
if (s[j+1]==s[i]) j++;
pre[i]=j;
}
}
int main()
{
f>>t;
while (t--)
{
f>>s;
ns=s.length();
maxim=0;
s='0'+s;
prefix();
for (int i=1;i<=ns;i++)
if (pre[i] && i%(i-pre[i])==0) maxim=i;
g<<maxim<<'\n';
}
f.close();
g.close();
return 0;
}