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]<<' ';
		}
	}
}

 

posted @ 2024-11-17 20:13  薇尔莉特·伊芙加登  阅读(29)  评论(0)    收藏  举报