Pagini recente » Cod sursa (job #143935) | Cod sursa (job #61409) | Cod sursa (job #1012772) | Cod sursa (job #2882312) | Cod sursa (job #718210)
Cod sursa(job #718210)
#include <fstream>
#include <string.h>
#define MAX 1000050
using namespace std;
char sir[MAX];
int pfix[MAX], sol, t;
void getPrefix()
{
int i, q = 0, lgt = strlen(sir) - 1;
for(i = 2, pfix[1] = 0; i <= lgt; i++)
{
while(q && sir[q + 1] != sir[i])
q = pfix[q];
if(sir[q + 1] == sir[i])
q++;
pfix[i] = q;
if(q && !(i % (i - pfix[i])))
sol = i;
}
}
int main()
{
ifstream in("prefix.in");
ofstream out("prefix.out");
in>>t;
in.getline(sir, MAX);
while(t--)
{
in.getline(sir + 1, MAX); sir[0] = ' ';
getPrefix();
out<<sol<<'\n';
}
in.close();
out.close();
return 0;
}