Pagini recente » Cod sursa (job #237754) | Cod sursa (job #317483) | Cod sursa (job #1605737) | Cod sursa (job #140699) | Cod sursa (job #1309018)
#include <fstream>
#include <string>
#include <vector>
int main(){
std::ifstream fin("prefix.in");
std::ofstream fout("prefix.out");
int T; fin>>T;
while(T--){
std::string s; fin>>s;
std::vector<unsigned> prefix(s.size());
prefix[0]=0;
unsigned k=0;
for(unsigned i=1;i<s.size();++i){
while(k>0&&s[i]!=s[k]) k=prefix[k-1];
if(s[k]==s[i]) k++;
prefix[i]=k;
}
unsigned l=0;
for(unsigned i=0;i<s.size();++i)
if(prefix[i]>0 && (i+1)%(i+1-prefix[i])==0) l=i+1;
fout<<l<<'\n';
}
}