题意

给定数字串A和B,按指定规则加密,自行读题,不再赘述。

思路

模呗。注意统计结果以长串为准,而不是固定的A串或者B串的长度,所以短串要补0。计算结果注意消除前导0。坑还是不少的

代码

#include <bits/stdc++.h>
using namespace std;
int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	string a, b;
	cin >> a >> b;
	reverse(a.begin(), a.end());
	reverse(b.begin(), b.end());
	while (a.size() < b.size()) a.push_back('0');
	while (a.size() > b.size()) b.push_back('0');
	string ans = "";
	for (int i = 0; i < b.size() && i < a.size(); ++i) {
		if (i & 1) {
			int sum = b[i] - '0' - a[i] + '0';
			while (sum < 0) sum += 10;
			if (sum < 10) ans.push_back(sum + '0');
			if (sum == 10) ans.push_back('J');
			if (sum == 11) ans.push_back('Q');
			if (sum == 12) ans.push_back('K');
		}
		else {
			int sum = a[i] - '0' + b[i] - '0';
			sum %= 13;
			if (sum < 10) ans.push_back(sum + '0');
			if (sum == 10) ans.push_back('J');
			if (sum == 11) ans.push_back('Q');
			if (sum == 12) ans.push_back('K');
		}
	}
	while (ans.back() == '0') ans.pop_back();
	if (ans.size() == 0) ans = "0";
	reverse(ans.begin(), ans.end());
	cout << ans << '\n';
	return 0;
} 

HINT

不定时更新更多题解,Basic Level 全部AC代码,详见 link ! ! !

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐