Pagini recente » Cod sursa (job #2031743) | Cod sursa (job #1299385) | Cod sursa (job #2116435) | Cod sursa (job #284172) | Cod sursa (job #197343)
Cod sursa(job #197343)
#include <fstream>
#include <string>
#include <vector>
using namespace std;
fstream fin("prefix.in", ios :: in), fout("prefix.out", ios :: out);
string s;
vector< int > p;
int T, i, j, rez;
int main()
{
for (fin >> T; T; --T)
{
fin >> s;
p.assign(s.size()+1,0);
for (i = 1, j = -1, p[0] = -1; i < s.size(); ++i)
{
while ( j>=0 && s[j+1] != s[i])
j = p[j];
if (s[j+1] == s[i]) ++j;
p[i] = j;
}
for (i = 1, rez = 0; i<s.size(); ++i)
if (i - p[i] <= ((i+1) >> 1) )
if (!((i+1) % (i - p[i])))
rez = i+1;
fout << rez << endl;
}
return 0;
}