Pagini recente » Cod sursa (job #1895270) | Cod sursa (job #1456230) | Cod sursa (job #394126) | Cod sursa (job #1958530) | Cod sursa (job #3039399)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cstring>
///#include <tryhardmode>
///#include <GODMODE::ON>
using namespace std;
ifstream fin ("prefix.in");
ofstream fout ("prefix.out");
const int NMAX=1e6+5;
string a;
int p[NMAX];
int kmp(int n)
{
int i,k=0,rez=0;
for(i=1;i<n;i++)
{
while(a[i]!=a[k] && k>0)
k=p[k-1];
if(a[i]==a[k])
k++;
p[i]=k;
int perioada=i-p[i]+1;
if(p[i]>0 && ((i+1)%perioada)==0)
rez=i+1;
}
return rez;
}
int main()
{
int t;
fin>>t;
while(t--)
{
fin>>a;
int n=a.size();
fout<<kmp(n)<<"\n";
}
return 0;
}