Pagini recente » Cod sursa (job #3326311) | Cod sursa (job #3343553) | Cod sursa (job #3352880) | Cod sursa (job #3040249) | Cod sursa (job #3349889)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
const int Nmax = 1e6+5;
int lps[Nmax];
void test(string &s){
int n = s.size();
for(int i = 0; i<n; i++) lps[i] = 0;
int i = 1, j = 0;
while(i < n){
if(s[i] == s[j]){
lps[i++] = ++j;
}
else if(j == 0){
i++;
}
else{
j = lps[j-1];
}
}
for(int i = n; i>= 0; i--){
int perioada = i-lps[i-1];
if(i % perioada == 0 && lps[i-1] > 0){
fout << i << '\n';
break;
}
}
}
int main(){
int t;
fin >> t;
while(t--){
string s;
fin >> s;
test(s);
}
return 0;
}