Pagini recente » Cod sursa (job #1796881) | Cod sursa (job #2515184) | Cod sursa (job #546471) | Cod sursa (job #1100128) | Cod sursa (job #2060683)
#include <iostream>
#include <fstream>
#include <string.h>
#define N_MAX 1000005
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int n, Pi[N_MAX];
char S[N_MAX];
void pifunction()
{
int k;
k = 0;
for(int i = 2; i <= n; i++)
{
while(k > 0 && S[i] != S[k+1])
k = Pi[k];
if(S[i] == S[k + 1])
k++;
Pi[i] = k;
}
}
int main()
{
int T;
f >> T;
while(T--)
{
int maxx = 0;
f >> (S + 1);
n = strlen(S + 1);
pifunction();
for(int i = 1; i <= n; i++)
if(Pi[i] != 0 && i % (i - Pi[i]) == 0)
maxx = max(maxx, i);
g << maxx << "\n";
}
return 0;
}