Pagini recente » Cod sursa (job #3293085) | Cod sursa (job #2328972) | Cod sursa (job #1481057) | Cod sursa (job #2559628) | Cod sursa (job #2288936)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("prefix.in");
ofstream g ("prefix.out");
char s[1000010] ;
int p[1000010] , T , M , k;
int main()
{
f >> T;
for (int i = 1 ; i <= T ; i++)
{
f >> s + 1 ;
M = strlen(s+1);
k = 0 ;
for (int j = 2 ; j <= M ; j ++)
{
while (k != 0 && s[k+1] != s[j]) k = p[k];
if (s[k+1] == s[j]) k ++ ;
p[j] = k ;
}
for (int j = M ; j >= 1 ; j --)
{
if (p[j] != 0 && j%(j-p[j]) == 0)
{
g << j << '\n';
break;
}
if (j == 1) g << '0' << '\n';
}
}
}