Pagini recente » Cod sursa (job #2172953) | Cod sursa (job #2048549) | Cod sursa (job #280151) | Cod sursa (job #2778129) | Cod sursa (job #3163614)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("prefix.in");
ofstream cout("prefix.out");
int main()
{
int t;
string s;
cin >> t;
while(t--)
{
int sol = 0, k = 0;
string s;
cin >> s;
vector < int > pi(s.size());
pi[0] = 0;
for(int i = 1; i < s.size(); i++)
{
while(k != 0 && s[k]!= s[i])
k = pi[k - 1];
if(s[k] == s[i])
k++;
pi[i] = k;
if((i + 1) % (i + 1 - pi[i]) == 0 && (i + 1) / (i + 1 - pi[i]) > 1)
sol = i + 1;
}
cout << sol << '\n';
}
return 0;
}