Pagini recente » Cod sursa (job #2667854) | Cod sursa (job #2049171) | Cod sursa (job #1555780) | Cod sursa (job #1104307) | Cod sursa (job #1365790)
#include <fstream>
#include <cstring>
#define NMAX 1000005
using namespace std;
char c,a[NMAX];
int i,nr,teste,phi[NMAX];
inline void prefix()
{
for (int i=0;i<=nr;i++)
phi[i]=0;
int k=0;
for (int i=2;i<=nr;i++)
{
while (k && a[k+1]!=a[i])
k=phi[k];
if (a[k+1]==a[i])
k++;
phi[i]=k;
}
}
int main()
{
ifstream f("prefix.in");
ofstream g("prefix.out");
f>>teste;
for (;teste;teste--)
{
nr=0;
f>>(a+1);
nr=strlen(a+1);
prefix();
for (i=nr;i>=1;i--)
if (phi[i] && i%(i-phi[i])==0)
{
g<<i<<'\n';
break;
}
if (i==0)
g<<0<<'\n';
}
}