Pagini recente » Cod sursa (job #2624586) | Cod sursa (job #1559398) | Cod sursa (job #484652) | Cod sursa (job #2912768) | Cod sursa (job #2065599)
#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
const int NMax = 1000005;
char s[NMax];
int pi[NMax];
void Prefix()
{
int n = strlen(s);
int j = 0;
for(int i=1; i<n; ++i)
{
while(j > 0 && s[i] != s[j])
j = pi[j-1];
if(s[i] == s[j])
++j;
pi[i] = j;
}
}
int main()
{
int T;
fin >> T;
for(int i=1; i<=T; ++i)
{
fin >> s;
Prefix();
int n = strlen(s), rez = 0 ;
for(int k = 0; k < n; ++k)
if(pi[k])
{
int k1 = k+1;
int val = k1 - pi[k];
if(k1 % val == 0)
rez = k1;
}
fout << rez << "\n";
}
return 0;
}