Pagini recente » Cod sursa (job #2348145) | Cod sursa (job #1771447) | Cod sursa (job #433024) | Cod sursa (job #2486311) | Cod sursa (job #2166317)
#include <bits/stdc++.h>
#define INFILE "prefix.in"
#define OUTFILE "prefix.out"
using namespace std;
ifstream in(INFILE);
ofstream out(OUTFILE);
void PrefixFunction(string& S,vector<int>&p) {
p.resize(S.size());
int j = 0;
for (int i = 1; i < (int)S.size(); i++) {
while (j > 0 && S[j] != S[i])
j = p[j-1];
if (S[j] == S[i])
j++;
p[i] = j;
}
}
int main(){
int t;
in>>t;
for(int i=1;i<=t;i++){
string s;
in>>s;
vector<int> p;
PrefixFunction(s,p);
bool gasit=false;
for(int j=s.size();j>=1;j--){
if(p[j-1]>0&&j%(j-p[j-1])==0){
out<<j<<"\n";
gasit=true;
break;
}
}
if(!gasit)
out<<0<<"\n";
}
return 0;
}