Pagini recente » Cod sursa (job #1027089) | Cod sursa (job #1452639) | Cod sursa (job #132778) | Cod sursa (job #2923917) | Cod sursa (job #218607)
Cod sursa(job #218607)
#include<fstream>
#define max 1000001
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int n,nr,poz[max],sol,k;
char s[max];
//functie prefix KMP;
void prefix(){
k=0;
sol=0;
for(int i=2;i<=n;i++){
while(k&&s[k+1]!=s[i])
k=poz[k];
if(s[k+1]==s[i])
k++;
poz[i]=k;
if(poz[i])
if(!(i%(i-poz[i])))
sol=i;
}
}
void citire(){
fin>>nr;
fin.getline(s+1,max);
for(int i=0;i<nr;i++){
fin.getline(s+1,max);
n=strlen(s+1);
prefix();
fout<<sol<<"\n";
}
}
int main(){
citire();
fin.close();
fout.close();
return 0;
}