Pagini recente » Cod sursa (job #2767204) | Cod sursa (job #3265166) | Cod sursa (job #1183519) | Cod sursa (job #2921242) | Cod sursa (job #3257975)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int t, urm[1000006];
string s;
int kmp()
{
int k = 0, m = s.length(), res = 0;
for (int i=2; i<=m; i++)
{
while(k > 0 && s[k] != s[i - 1]) k = urm[k];
if (s[k] == s[i - 1]) k ++;
urm[i] = k;
if (i % (i - urm[i]) == 0 && urm[i] != 0) res = i;
}
return res;
}
int main()
{
fin >> t;
while(t--)
{
fin >> s;
fout << kmp() << '\n';;
}
return 0;
}