Pagini recente » simulare-oji-xutzu | Cod sursa (job #1836019) | Cod sursa (job #2578645) | Cod sursa (job #1359197) | Cod sursa (job #1287619)
#include<fstream>
#include<cstring>
using namespace std;
const int NMAX=1000005;
int t,dp[NMAX];
char s[NMAX];
inline int FindPrefix(int n)
{
int i;
for (i=n;i>=2;i--)
if (dp[i]>=(i>>1) && i%(i-dp[i])==0) return i;
return 0;
}
int main()
{
int i,len,maxim,dr;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
fin>>t;
while (t--)
{
fin>>(s+1);
len=strlen(s+1);
dp[1]=0;maxim=0;
for (i=2;i<=len;i++)
if (s[dp[i-1]+1]==s[i]) dp[i]=dp[i-1]+1;
else
{
dr=dp[i-1];
while (dr && s[dr+1]!=s[i]) dr=dp[dr];
dp[i]=0;
if (s[dr+1]==s[i]) dp[i]=dr+1;
}
fout<<FindPrefix(len)<<"\n";
}
return 0;
}