Pagini recente » Cod sursa (job #1709161) | Cod sursa (job #1813426) | Rezultatele filtrării | Istoria paginii utilizator/andretti | Cod sursa (job #2984987)
#include <bits/stdc++.h>
using namespace std;
#if 1
#define cin fin
#define cout fout
ifstream fin("prefix.in");
ofstream fout("prefix.out");
#endif // 1
const int nmx = 1e6 + 4;
int pi[nmx];
void calcPi(string& s){
fill(pi,pi+s.size(),0);
int j = 0;
for(int i=1;i<s.size();i++){
while(j>0 && s[j]!=s[i])
j = pi[j-1];
if(s[i]==s[j])
j++;
pi[i] = j;
}
}
int main(){
int n;
cin >> n;
while(n--){
string s;
cin >> s;
calcPi(s);
int ans = 0;
for(int i=s.size()-1;i>=0;i--){
int itr = 2*pi[i]-i-1;
if(itr >= 0){
if(itr%(i-pi[i]+1)==0){
ans = i+1;
break;
}
}
}
cout << ans << "\n";
}
}