Pagini recente » Cod sursa (job #1329173) | Cod sursa (job #1061968) | Cod sursa (job #26283) | Cod sursa (job #2452639) | Cod sursa (job #2803292)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
string str;
int urmator[100001];
void kmp()
{
int k = 0, res = 0, len = str.length();
for(int i = 2; i <= len; ++i)
{
while(k > 0 and str[k] != str[i - 1])
{
k = urmator[k];
}
if(str[k] == str[i - 1])++k;
urmator[i] = k;
if(i % (i - urmator[i]) == 0 and urmator[i] != 0)
{
res = i;
}
}
fout << res << '\n';
}
int main()
{
int T;
fin >> T;
for(int i = 1; i <= T; ++i)
{
fin >> str;
kmp();
}
return 0;
}