/**
* Author : Vu Khac Minh
**/
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn = 1e6 + 5;
const int mod = 1e9+7;
const int base = 31;
ll Hash[maxn],Pow[maxn],n,rHash[maxn];
ll gethash(int l,int r)
{
return (Hash[r] - Hash[l-1] * Pow[r-l+1]%mod + mod)%mod;
}
int calc(int l,int r)
{
for(int len = 1;2*len<=r-l+1;len++)
if(gethash(l,l+len-1) == gethash(r-len+1,r))
return 2 + calc(l+len,r-len);
return (l<=r);
}
string s;
void solve()
{
cin>>s;
n = s.length();
s = ' ' + s;
for(int i =1;i<=n;i++) Hash[i] = (Hash[i-1] *base + s[i] - 'a')%mod;
cout<<calc(1,n)<<'\n';
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int ntest;
cin>>ntest;
Pow[0] = 1;
for(int i =1;i<maxn;i++) Pow[i] = Pow[i-1] * base%mod;
while(ntest--) solve();
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |