模拟橙题求助!!!WA#37和#32,60分
查看原帖
模拟橙题求助!!!WA#37和#32,60分
486799
BlackPanda楼主2022/10/13 14:17
#include <bits/stdc++.h>
using namespace std;
#define int unsigned long long

int n, q;
int x;
string s[100005];
int sum1, sum2;
map<int, string> mp;
int cntCap[100005];

void solve(string &res)
{
	int len = res.length();
	for (int j = 0; j < len; j ++ )
	{
		if (res[j] >= 'a' && res[j] <= 'z')
			res[j] = res[j] - 'a' + 'A';
		else if (res[j] >= 'A' && res[j] <= 'Z')
			res[j] = res[j] - 'A' + 'a';
	}
}

signed main()
{	
	int cc = 1;
	scanf("%lld", &n);
	int Cap = 0;
	for (int i = 1; i <= n; i ++ )
	{
		cin >> s[i];
		if (s[i] != "CapsLock")
		{
			mp[cc] = s[i];
			cntCap[cc] = Cap;
			cc ++ ;
			sum1 ++ ;
		}
		else
		{
			Cap ++ ;
			sum2 ++ ;
		}
	}
	scanf("%lld", &q);
	while (q -- )
	{
		scanf("%lld", &x);
		int tmp = x % sum1;
		int ttt = x % n;
		int cnt = 0;
		string res;
		if (x <= sum1)
		{
			cnt = cntCap[x];
			res = mp[x];
		}
		else
		{
			//cout << tmp << " " << cntCap[tmp];
			cnt = sum2 * (x / sum1) + cntCap[tmp];
			if (x % sum1 == 0)
			{
				cnt -= cntCap[tmp];
				tmp = sum1;
			}
			res = mp[tmp];
		}
		if (cnt % 2 == 1)
		{
			solve(res);
		}
		cout << res << endl;
	}
	return 0;
}
2022/10/13 14:17
加载中...