Pagini recente » Cod sursa (job #2952051) | Cod sursa (job #492563) | Cod sursa (job #642) | Cod sursa (job #1632589) | Cod sursa (job #2811124)
#include <bits/stdc++.h>
using namespace std;
string s;
int rez(string s,int n){
int q=0,ans=0;
vector <int> pi((int)s.size(), 0);
pi[1]=0;
for(int i=2;i<=n;++i){
while(q && s[q+1]!=s[i])
q=pi[q];
if(s[q+1]==s[i])
++q;
pi[i]=q;
}
pi.erase(pi.begin());
for(int i=s.size()-1;i>=1;i--)
if(pi[i]>0 && (i+1)%(i+1-pi[i])==0)
return i+1;
return 0;
}
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin>>t;
while(t--){
cin>>s;
s.insert(s.begin(),' ');
cout<<rez(s,s.size()-1)<<"\n";
}
}