AtCoder Beginner Contest 380 D题题解
题目链接 : D-Strange Mirroring
思路:规律不好找,试了好多次才找到,就是先K--保证和string一样从0开始,算出K%S对应的哪个字母,再求出K/S的二进制上的1的奇偶性确定是否要转换。
代码如下:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,k;
int inis(ll m){
int x=0;
while(m>0){
if(m%2==1){
x++;
}
m/=2;
}
return x;
}
int main(){
string s;
cin>>s;
cin>>n;
k=s.size();
for(int i=0;i<n;i++){
ll x;
cin>>x;
x--;
ll ans=x%k;
ll sum=inis(x/k);
if(sum%2==1){
if(s[ans]>='A'&&s[ans]<='Z'){
char op=s[ans]-'A'+'a';
cout<<op<<' ';
}
if(s[ans]>='a'&&s[ans]<='z'){
char op=s[ans]-'a'+'A';
cout<<op<<' ';
}
}
else{
cout<<s[ans]<<' ';
}
}
}

浙公网安备 33010602011771号