Pagini recente » Cod sursa (job #2176902) | Cod sursa (job #3270268) | Cod sursa (job #2176911) | Cod sursa (job #3194124) | Cod sursa (job #3288371)
#include <bits/stdc++.h>
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
string n,v;
int len,lps[2000005],i,t,lst,j,poz;
int main()
{
in>>t;
while(t--)
{
in>>n;
len=0;
lps[0]=0;
for(i=1; n[i]; ++i)
{
if(n[i]==n[len])
++len,lps[i]=len;
else if(!len)
lps[i]=0;
else
{
while(len)
{
len=lps[len-1];
if(n[i]==n[len])
{
++len;
lps[i]=len;
break;
}
}
}
}
lst=0;
for(i=0;n[i];++i)
if(lps[i]*2==i+1)
lst=lps[i];
if(!lst)
{
out<<0<<'\n';
continue;
}
v="";
for(i=0;i<lst;++i)
v+=n[i];
poz=lst;
for(i=lst,j=0;n[i];++i)
{
if(v[j]==n[i])
{
++j;
if(j==v.size())
j=0,poz=i+1;
}
else break;
}
out<<poz<<'\n';
}
}