Pagini recente » Cod sursa (job #3247681) | Cod sursa (job #2523037) | Cod sursa (job #1812678) | Cod sursa (job #405179) | Cod sursa (job #2323210)
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
char cuv[1000001];
int prefix[1000001], maxi, n;
void searchfor(char cuv[])
{
int l=strlen(cuv)+1, j=0;
for(int i=2; i<=l; i++)
{
while(j!=0 && cuv[j+1]!=cuv[i])
{
j=prefix[j];
if(cuv[j+1]==cuv[i])
j++;
}
prefix[i]=j;
}
}
int main()
{
fin>>n;
for(int i=1; i<=n; i++)
{
fin>>cuv;
maxi=0;
searchfor(cuv);
int l=strlen(cuv)+1;
for(int i=1; i<=l; i++)
{
if(prefix[i])
if(i%(i-prefix[i])==0)
maxi=i;
}
fout<<maxi<<"\n";
}
return 0;
}