Pagini recente » Cod sursa (job #1222089) | Cod sursa (job #2068808) | Cod sursa (job #1847890) | Cod sursa (job #1888643) | Cod sursa (job #1573341)
#include<fstream>
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
char s[1000010];
int prefix[1000010];
int main()
{
int T;
in >> T;
while (T--)
{
in >> s;
int j = 0,i;
for (i = 1; s[i] != '\0'; ++i)
{
while (j > 0 && s[j] != s[i])
j = prefix[j - 1];
if (s[j] == s[i])
++j;
prefix[i] = j;
}
--i;
for (; i>0; --i)
if (prefix[i] * 2 == (i + 1))
{
out << i + 1<<'\n';
break;
}
else if (prefix[i] * 2 > (i + 1) && prefix[i]%((i+1)-prefix[i])== 0)
{
out << i + 1<<'\n';
break;
}
if (i == 0)
out << 0<<'\n';
}
return 0;
}