Pagini recente » Cod sursa (job #3002395) | Cod sursa (job #1032597) | Cod sursa (job #1923907) | Cod sursa (job #2566481) | Cod sursa (job #2921894)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
vector<int> prefix_function(string s) {
int n = (int)s.length();
vector<int> pi(n);
for (int i = 1; i < n; i++) {
int j = pi[i-1];
while (j > 0 && s[i] != s[j])
j = pi[j-1];
if (s[i] == s[j])
j++;
pi[i] = j;
}
return pi;
}
int main()
{
int t;string s;
fin>>t;
while(t--)
{
fin>>s;
int n=s.length(),m=0;
vector<int>pi=prefix_function(s);
///for(int i=0;i<n;i++) cout<<pi[i]<<" ";cout<<"\n";
for(int i=1;i<=n;i++)
if(pi[i-1]&&i%(i-pi[i-1])==0) m=max(m,i);
fout<<m<<"\n";
}
return 0;
}