Pagini recente » Cod sursa (job #1389647) | Cod sursa (job #2909474) | Cod sursa (job #1627105) | Cod sursa (job #1602615) | Cod sursa (job #1932319)
#include <cstdio>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
ifstream f("prefix.in");
int calcul_prefix()
{
string cuvant;
vector <int>prefix(1000000,0);
f>>cuvant;
int n=cuvant.size();
int i=1,j=0,lmax=0;
for(i=1;i<n;i++)
{
while(cuvant[i]!=cuvant[j]&&j>0)
{
j=prefix[j-1];
}
if(cuvant[i]==cuvant[j])
{
j++;
prefix[i]=j;
}
if(prefix[i]!=0)
if(prefix[i]%(i+1-prefix[i])==0&&(i+1)<=2*prefix[i])
lmax=i+1;
}
return lmax;
}
int main()
{
freopen("prefix.out", "w", stdout);
int t;
f>>t;
for(int i=0;i<t;i++)
printf("%d\n", calcul_prefix());
return 0;
}