Pagini recente » Cod sursa (job #1417875) | Cod sursa (job #1679689) | Cod sursa (job #419981) | Cod sursa (job #1887449) | Cod sursa (job #447003)
Cod sursa(job #447003)
#include<fstream>
#define nmax 1000002
using namespace std;
int L[nmax],m;
char P[nmax];
int pattern()
{
int p,k,max=0;L[1]=0;
for(p=2;p<=m;p++)
{
k=L[p-1];
while(k>0 && P[k+1]!=P[p]) k=L[k];
if(P[k+1]==P[p]) k++;
L[p]=k;
if(k && p%(p-k)==0) max=p;
}
return max;
}
int main()
{
ifstream f("prefix.in");
int t;f>>t;f.get();
ofstream g("prefix.out");
for(;t;--t)
{
f.getline(P+1,nmax,'\n');
m=strlen(P+1);
g<<pattern()<<'\n';
}
}