1048 数字加密

mac2026-08-14  6

分析:

根据题意,并不难,就是要点在于按要求逐个处理单个数字唯一一点不好处理的是输入的A和B不一定等长,所以还需要在短的字符串前面填充字符,使得二者等长; WA了一次(测试点2和5),因为我用的其他字符填充,查询其他人答案发现需要用’0’填充 所以我仍然不知道为什么要填‘0’,按照输入样例的理解,如果对应位上A没有数字,直接输出该位置上的B不就行了吗

代码如下

#include <iostream> using namespace std; char str[14] = "0123456789JQK"; int main() { string A, B; cin >> A >> B; int LenA = A.size(), LenB = B.size(); int differ = LenB - LenA; if(differ < 0) for(int i = 0; i < -differ; i++) B = "0" + B; else for(int i = 0; i < differ; i++) A = "0" + A; int len = LenB >= LenA? LenB : LenA; for(int i = 0; i < len; i++) { if(1 == (len-i) % 2) { int num = A[i]-'0' + B[i]-'0'; num %= 13; printf("%c", str[num]); } else { int num = (B[i]-'0') - (A[i]-'0'); if(num < 0) num += 10; printf("%c", str[num]); } } }
最新回复(0)