题目链接:E - (∀x∀)
考虑26进制,将字母A~Z 折算成数字0~25,求得最大的可能的回文字符串的26进制值即为答案
//>>>Qiansui
#include<map>
#include<set>
#include<stack>
#include<cmath>
#include<queue>
#include<deque>
#include<cstdio>
#include<string>
#include<vector>
#include<utility>
#include<iomanip>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define ull unsigned long long
#define mem(x,y) memset(x,y,sizeof(x))
//#define int long long
inline ll read()
{
ll x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x*f;
}
using namespace std;
const int maxm=2e5+5,inf=0x3f3f3f3f,mod=998244353;
ll n;
string ss,rss;
void solve(){
cin>>n>>ss;
ll ans=0,l=(n-1)/2;
rss=ss;
ans=0;
for(int i=0;i<=l;++i){
ans=(ans*26+(ss[i]-'A'))%mod;//假设前半即为最大
rss[n-1-i]=rss[i];
}
ans=(ans+1)%mod;
if(ss<rss) ans=(ans+mod-1)%mod;//rss的作用就是为了减去目前找到的最大的一个不满足题意得情况
cout<<ans<<'\n';
return ;
}
signed main(){
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
int _=1;
cin>>_;
while(_--){
solve();
}
return 0;
}
标签:ch,ll,个数,long,define,while,include,abc242E,回文
From: https://www.cnblogs.com/Qiansui/p/17416112.html