Pagini recente » Cod sursa (job #1632885) | Cod sursa (job #1823731) | Cod sursa (job #1974548) | Cod sursa (job #942247) | Cod sursa (job #2496239)
#include <iostream>
#include <fstream>
#define MAX 1000010
using namespace std;
int n,ans;
int pi[MAX];
string s;
void calc_pi(string pat,int pi[MAX]){
pi[0]=0;
int la=0;
for(int i=1;i<pat.size();)
if(pat[i]==pat[la])pi[i++]=++la;
else
if(la!=0)la=pi[la-1];
else pi[i++]=0;
}
int main()
{
ifstream f ("prefix.in");
ofstream g ("prefix.out");
f>>n;
while(n--){
f>>s;
calc_pi(s,pi);
// for(int i=0;i<s.size();i++)cout<<pi[i]<<" "; cout<<'\n';
ans=0;
for(int i=0;i<s.size();i++)
if(pi[i]!=0&&pi[i]>=(i+1)/2&&(i+1)%(i+1-pi[i])==0)
ans=i+1;
g<<ans<<'\n';
}
f.close ();
g.close ();
return 0;
}