Pagini recente » Cod sursa (job #2375111) | Cod sursa (job #2687248) | Cod sursa (job #414409) | Cod sursa (job #1677316) | Cod sursa (job #2060903)
#include <fstream>
#include <string>
using namespace std;
ifstream fi("prefix.in");
ofstream fo("prefix.out");
int T;
string s;
int A[1000001];
void kmp(string s)
{
A[0]=0;
for(int i=1;i<s.size();i++)
{
int r=A[i-1];
while(r>0)
{
if(s[i]==s[r])
break;
else
r=A[r-1];
}
if(s[i]==s[r])
A[i]=r+1;
else
A[i]=r;
}
}
int main()
{
fi>>T;
for(int t=1;t<=T;t++)
{
fi>>s;
kmp(s);
int rez=-1;
for(int i=0;i<s.size();i++)
if(A[i]!=0&&(i+1)%(i+1-A[i])==0)
rez=i;
if(rez==-1)
fo<<"0\n";
else
fo<<rez+1<<"\n";
}
return 0;
}