Pagini recente » Cod sursa (job #1424858) | Cod sursa (job #2616542) | Cod sursa (job #869223) | Cod sursa (job #367927) | Cod sursa (job #2482958)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
int n,t,pref[1000003];
char a[1000003];
void prefix()
{
int p=0;
for(int i=2;i<=n;i++)
{
while(p>0&&a[i]!=a[p+1])
p=pref[p];
if(a[i]==a[p+1])
++p;
pref[i]=p;
}
}
int periodic()
{
int nr=0,k;
for(int i=1;i<=n;i++)
{
k=i-pref[i];
if(pref[i]&&i%k==0&&nr<i)
nr=i;
}
return nr;
}
void citire()
{
ifstream fin("prefix.in");
ofstream fout("prefix.out");
fin>>t;
a[0]='*';
for(int i=0;i<t;i++)
{
fin>>a+1;
n=strlen(a+1);
prefix();
fout<<periodic()<<"\n";
}
}
int main()
{
citire();
return 0;
}