Pagini recente » Cod sursa (job #521069) | Cod sursa (job #2962530) | Cod sursa (job #252424) | Cod sursa (job #410186) | Cod sursa (job #2701965)
#include <fstream>
#include <string>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
string a;
int p[1000001];
int main()
{
int t, i, n, j, sol;
fin >> t;
for (;t;t--)
{
fin >> a;
n = a.size();
sol = 0;
for (i = 1; i<n; i++)
{
j = p[i-1];
while (j > 0 && a[i] != a[j])
j = p[j-1];
if (a[i] == a[j])
j++;
p[i] = j;
if (p[i] && (i + 1)%(i + 1 - p[i]) == 0)
sol = i+1;
}
fout << sol << '\n';
}
return 0;
}