Pagini recente » Profil EugenStoica | Cod sursa (job #2100990) | Cod sursa (job #1138586) | Cod sursa (job #2842845) | Cod sursa (job #2434233)
#include<fstream>
#include<cstring>
using namespace std;
ifstream cin("prefix.in");
ofstream cout("prefix.out");
char s[1000001];
long k,urm[1000001],rez,t;
int main()
{
long i;
int n;
cin >> n;
cin.getline(s,1000000);
for(int j = 1 ; j <= n ; j++)
{
cin.getline(s + 1, 1000005);
urm[1] = 0;
k = 0;
t = strlen(s + 1);
for(int i = 2 ; i <= t ; i++)
{
while( k > 0 && s[i] != s[k +1]) k = urm[k];
if(s[i] == s[k + 1]) k++;
urm[i] = k;
if(k > 0 && (i % (i - k)) == 0) rez = i;
}
cout << rez << '\n';
}
return 0;
}