Pagini recente » Cod sursa (job #1690091) | Cod sursa (job #227799) | Cod sursa (job #2646887) | Cod sursa (job #1649175) | Cod sursa (job #733340)
Cod sursa(job #733340)
#include <fstream>
#include <string.h>
#define dim 1000020
using namespace std;
char s[dim];
int p[dim], maxu, t;
void prefix(){
int i,k = 0,d=strlen(s+1);
maxu = 0;
for(i = 2, p[1] = 0; i <=d; i++){
while(k > 0 && s[k + 1] != s[i])
k = p[k];
if(s[k + 1] == s[i])
k++;
p[i] = k;
if(p[i]>0 && (i)%(i-p[i])==0)
maxu = i ;
}
}
int main(){
ifstream f("prefix.in");
ofstream g("prefix.out");
f>>t;
f.get();
while(t--){
f.getline(s+1, dim);
prefix();
g<<maxu<<'\n';
}
f.close();
g.close();
return 0;
}