Pagini recente » Cod sursa (job #2349997) | Cod sursa (job #2879826) | Cod sursa (job #2349944) | Cod sursa (job #2673855) | Cod sursa (job #1309019)
#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;
unsigned l=0;
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;
if(k>0 && (i+1)%(i+1-k)==0) l=i+1;
}
fout<<l<<'\n';
}
}