Pagini recente » Cod sursa (job #690140) | ultimapregatireomi | Cod sursa (job #2056152) | Cod sursa (job #2954891) | Cod sursa (job #2479891)
#include <fstream>
#include <cstring>
using namespace std;
ifstream cin("prefix.in");
ofstream cout("prefix.out");
int n, phi[1000005], rasp, t, x;
string s;
int main()
{
cin >> t;
for(int k = 1; k <= t; k++)
{
cin >> s;
phi[0] = -1;
n = s.size();
for(int i = 1; i < n; i++)
{
x = i - 1;
while(s[phi[x] + 1] != s[i] && phi[x] != -1)
x = phi[x];
if(s[phi[x] + 1] == s[i])
phi[i] = phi[x] + 1;
else
phi[i] = -1;
}
rasp = 0;
for(int i = n - 1; i >= 0; i--)
{
if(phi[i] != -1 && (i + 1) % (i - phi[i]) == 0)
{
rasp = i + 1;
break;
}
}
cout << rasp << "\n";
}
return 0;
}