Pagini recente » Cod sursa (job #2362808) | Cod sursa (job #1844267) | Cod sursa (job #1253022) | Cod sursa (job #391382) | Cod sursa (job #1309020)
#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;
}
for(unsigned i=s.size()-1;i>0;--i)
if(prefix[i]&&(i+1)%(i+1-prefix[i])==0){ l=i+1; break;}
fout<<l<<'\n';
}
}