Pagini recente » Cod sursa (job #605312) | Cod sursa (job #1753527) | Cod sursa (job #2291887) | Cod sursa (job #694582) | Cod sursa (job #2059710)
#include <iostream>
#include <fstream>
#include <cstring>
#define max 1000001
using namespace std;
int n,k,mx;
char s[max];
int pr[max];
int main()
{
ifstream f("prefix.in");
ofstream f("prefix.out");
f>>n;
for(int i=0;i<n;i++)
{
f>>(s+1);
k=mx=0;
memset(pr,0,max);
pr[1]=0;
for(int i=2;i<=strlen(s+1);i++)
{
while(k>0 && s[k+1]!=s[i])
k=pr[k];
if(s[k+1]==s[i])
k++;
pr[i]=k;
}
int j;
for(j=strlen(s+1);j>1;j--)
if(pr[j] && j%(j-pr[j])==0)
{
g<<j<<endl;
break;
}
if(j==1)
g<<0<<endl;
}
return 0;
}