Moya_Rao
2024-11-16 22:39:59
给定一个长度不定的字符串
接下来有
赛时想了大半年,不得不说还是菜。菜,就多练呀。欢迎各位大佬来踩爆这个蒟蒻。
废话不多说我们进入正题,这道题目该怎么做呢?
一看就知道,不能够真的进行
正着找,你试试看就会发现,根本没用,啥都找不出来。那咋办?反着倒退呗。
首先要获得一个 while
循环实现,不会超时。
接下来我们折半来看,如果当前的 bool
变量
这样的操作要一直做到什么时候呢?一直做到这个
好啰嗦,思路也怪怪的,还是看代码吧,代码倒是简单。
你们就爱看这个,我清楚得很。没事,尽管看,就是能够 AC 滴!不过因为赛时调试了一下,导致记录里是有一些注释的,忽略就行,下面这个代码里的,被我删掉啦!
#include<bits/stdc++.h>
using namespace std;
int Q,n;
string s;
int main(){
cin>>s;n=s.size();s=" "+s;
cin>>Q;
while(Q--){
long long k,p=n;cin>>k;
while(k>p)p<<=1;
bool flag=0;
while(k>n){
long long tmp=k;
if(tmp>p/2)tmp-=p/2,flag=!flag;
k=tmp;p/=2;
}
if(flag){
if(s[k]>='A'&&s[k]<='Z')cout<<char(s[k]-'A'+'a')<<" ";
else cout<<char(s[k]-'a'+'A')<<" ";
}
else cout<<s[k]<<" ";
}
return 0;
}
还是不太难吧?欢迎点赞,谢谢!