PTA |1048 数字加密 分数 20 知识点:哈希

252 阅读1分钟

PTA | 程序设计类实验辅助教学平台 (pintia.cn)

注意对字符串进行填充之后,str.size()是动态的,len=str.size(),len不是动态的,如果在遍历的时候用len而不是str.size()可能会导致循环提前结束:

#include<bits/stdc++.h>
using namespace std;

int main()
{
    string A, B, C; cin >> A >> B;
    reverse(A.begin(), A.end());
    reverse(B.begin(), B.end());

    int lenA = A.size(), lenB = B.size();
    if (lenA > lenB)
    {
        B.append(lenA - lenB, '0');
    }
    else
    {
        A.append(lenB - lenA, '0');
    }

    char haxi[14] = { "0123456789JQK" };
    for (int i = 0; i < lenA; i++)
    {
        if (i % 2 == 0)
        {
            C += haxi[(A[i] - '0' + B[i] - '0') % 13];
        }
        else
        {
            int t = B[i] - A[i];
            if (t < 0)t = t + 10;
            C += haxi[t];
        }
    }

    //正序输出
    for (int i = C.size() - 1; i >= 0; i--)
    {
        cout << C[i];
    }
    return 0;
}

image.png