Pagini recente » Cod sursa (job #2127184) | Cod sursa (job #240945) | Cod sursa (job #674553) | Cod sursa (job #1639583) | Cod sursa (job #3038775)
#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
constexpr int NMAX = 1e6 + 1;
string s,r;
int kmp()
{
int n = s.size(); if(n == 2) return 0;
vector<int> pi(n + 1,0); int j = 0;
for(int i = 2; i < n ; i++)
{
while(j && s[i] != s[j + 1]) j = pi[j];
if(s[i] == s[j + 1]) j++;
pi[i] = j;
}
int maxi = 0;
for(int i = 1; i <= n; i++){
int idk = i - pi[i];
if(pi[i] && i % idk == 0)
maxi = i;
}
return maxi;
}
void solve()
{
s = " "; cin >> r;
s += r; cout << kmp() << '\n';
}
int main() {
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
int t; cin >> t;
while(t--) solve();
}