Pagini recente » Cod sursa (job #2959032) | Cod sursa (job #1813839) | Cod sursa (job #2091751) | Cod sursa (job #2403310) | Cod sursa (job #2321186)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int n,i,j,a,nr,t;
int pi[1000005];
string s,A;
void prefix_func()
{
int k=0;
pi[1]=0;
for(int q=2;q<=a;q++)
{
while(k && A[k+1]!=A[q])
k=pi[k];
if(A[k+1]==A[q])
k++;
pi[q]=k;
}
}
int main() {
fin>>t;
while(t--)
{
A=" ";
fin>>s;
A+=s;
a=(int)A.size();
prefix_func();
for(i=a-1;i>0;i--)
if(pi[i]>=(i+1)/2 && pi[i]%(i-pi[i])==0)
{
fout<<i<<"\n";
i=0;
}
if(i==0) fout<<0<<"\n";
}
}