Pagini recente » Cod sursa (job #1150753) | Cod sursa (job #2514035) | Cod sursa (job #255498) | Cod sursa (job #2605072) | Cod sursa (job #733499)
Cod sursa(job #733499)
#include <fstream>
#include <cstring>
#define MAX 10050
using namespace std;
char sir[MAX];
int pfix[MAX], sol, t;
void getPrefix()
{
int i, q = -1, lgt = strlen(sir); sol = 0;
for(i = 1, pfix[0] = -1; i < lgt; i++)
{
while(q >= 0 && sir[q + 1] != sir[i])
q = pfix[q];
if(sir[q + 1] == sir[i])
q++;
pfix[i] = q;
if(pfix[i]>=0 && !((i+1)%(i-pfix[i])))
sol = i + 1;
}
}
int main()
{
ifstream in("prefix.in");
ofstream out("prefix.out");
in>>t; in.get();
while(t--)
{
in.getline(sir, MAX);
getPrefix();
out<<sol<<'\n';
}
in.close();
out.close();
return 0;
}