Pagini recente » Cod sursa (job #769122) | Cod sursa (job #702377) | Cod sursa (job #2332204) | Cod sursa (job #2401611) | Cod sursa (job #799951)
Cod sursa(job #799951)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
int t[1111111];
char s[1111111];
inline int perioada(int n)
{
if(n%(n-t[n])==0 && n/(n-t[n])!=1)
return n-t[n];
return 0;
}
void solve()
{
int i,p=0,maxim=0;
in.getline(s,1111111);
t[0]=-1;
t[1]=0;
for(i=1;s[i];++i)
{
if(s[i]==s[t[i]])
t[i+1]=t[i]+1;
else
{
if(s[i]==s[0])
t[i+1]=1;
else
t[i+1]=0;
}
p=perioada(i+1);
if(p!=0)
maxim=i+1;
}
out<<maxim<<"\n";
}
int main()
{
int t,i;
in>>t;
in.getline(s,10);
for(i=1;i<=t;++i)
solve();
return 0;
}