Pagini recente » Istoria paginii utilizator/uaic_chelsau_andreas | Cod sursa (job #2432030) | Cod sursa (job #1352636) | Cod sursa (job #328958) | Cod sursa (job #1880327)
#include <bits/stdc++.h>
#define NN 1000005
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int T , answ , k , cnt;
string sir , s;
int main()
{
fin >> T;
fin.get();
for (; T ; --T)
{
cnt = 0;
answ = 0;
k = 0;
getline(fin,s);
sir = " ";
sir += s;
vector<int>pi(sir.length(),0);
for (int i = 2; sir[i] ; ++i)
{
while(k && sir[k+1] != sir[i])
k = pi[k];
if (sir[k+1] == sir[i])
k++;
pi[i] = k;
}
bool gasit = false;
for (int i = sir.size();i >= 1 && !gasit; --i)
{
if (!pi[i])
continue;
int p_start = i-pi[i];
if (pi[i] % p_start == 0)
{
fout << i << "\n";
gasit = true;
}
}
if (!gasit)
fout << 0 << "\n";
}
return 0;
}