Pagini recente » Cod sursa (job #2260763) | Cod sursa (job #2835154) | Cod sursa (job #2850766) | Cod sursa (job #2968746) | Cod sursa (job #1975083)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
typedef vector <int> vi;
int T,n;
string s;
vi p(1000001,0);
void prefix(){
p[1]=0;
int k=0,lmax=0;
for(int i=2;i<=n;i++){
while(k && s[i]!=s[k+1]) k=p[k];
if(s[i]==s[k+1])k++;
p[i]=k;
if(k && k%(i-k)==0)lmax=i;
}
g<<lmax<<'\n';
}
int main(){
f>>T;f.get();
while(T--){
getline(f,s);
n=s.size();
s.insert(s.begin(),' ');
prefix();
}
}