Pagini recente » Cod sursa (job #136035) | Cod sursa (job #1788490) | Cod sursa (job #226224) | Cod sursa (job #2665739) | Cod sursa (job #2687410)
#include <iostream>
#include <fstream>
#define Nmax 90
#include <cstring>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int main()
{
int p,i;
fin>>p;
for(; p; --p)
{
char a[Nmax];
fin>>a;
bool ok=true;
int pi[Nmax],n=strlen(a),k=0,numar=1;
for(i=1; i<=n; ++i)
pi[i]=0;
for(i=2; i<=n; ++i)
{
while(k && a[i-1]!=a[k])k=pi[k];
if(a[i-1]==a[k])++k;
pi[i]=k;
if(ok && pi[i]==0)numar=i;
else if(pi[i]!=0)ok=false;
}
if(2*numar>n)fout<<0<<'\n';
else
{
bool ok2=true;
for(i=n; i>=1; --i)
{
int current = pi[i];
if(current!=0)
{
int rest=i%current;
if(rest==0)
{
if(i%2==0 && current ==i/2)
{
fout<<i<<'\n';
ok2=false;
break;
}
}
else if(current%rest==0 && current ==(i-rest))
{
fout<<i<<'\n';
ok2=false;
break;
}
}
}
if(ok2)fout<<0<<'\n';
}
}
return 0;
}