Pagini recente » Cod sursa (job #2471135) | Cod sursa (job #2674297) | Cod sursa (job #2964285) | Cod sursa (job #462109) | Cod sursa (job #927415)
Cod sursa(job #927415)
#include<cstdio>
#include<cstring>
#include<fstream>
using namespace std;
#define MAX 1000005
int T , pi[MAX] , q , maxx ,N;
char s[MAX];
int main()
{
ifstream f("prefix.in");
ofstream g("prefix.out");
f>>T;
for(int i = 1 ; i <= T ; ++i )
{
f>>(s+1);
pi[0] = pi[1] = maxx = 0;
q = 0;
for(int i = 2 ; s[i] ; ++i )
{
while(s[i]!=s[q+1] && q)
q = pi[q];
if(s[i] == s[q+1])
++q;
pi[i] = q;
++N;
}
for(int i = N+1;i;--i)
if(pi[i] && pi[i]%(i-pi[i])==0)
{
maxx = i;
break;
}
g<<maxx<<"\n";
}
f.close();
g.close();
return 0;
}