Pagini recente » Cod sursa (job #2687201) | Cod sursa (job #1849392) | Cod sursa (job #2722713) | Cod sursa (job #3217211) | Cod sursa (job #2921899)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int n,ans;int pi[1000005];
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;
n=s.length();ans=0;
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;
}
///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) ans=i;
fout<<ans<<"\n";
}
return 0;
}