Pagini recente » Cod sursa (job #2259509) | Cod sursa (job #139116) | Cod sursa (job #790339) | Cod sursa (job #324161) | Cod sursa (job #2921902)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
vector<int> prefix_function(char* s) {
int n = strlen(s);
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;char s[1000005];
fin>>t;
while(t--)
{
fin>>s;
int n=strlen(s),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;
}