PAT 1048 数字加密

PAT 1048 数字加密

题目描述

思路讲解

分析:首先将a和b倒置,将字符串a和b中较短的那个末尾添加0直到两个字符串长度相等,然后从0开始依次处理每一位,如果当前位是奇数位(i % 2 == 0)则将a[i]的数字加上b[i]的数字再对13取余,结果添加在字符串c的末尾;如果是偶数位,计算b[i]和a[i]的差值,如果小于0就加10,然后将结果添加在字符串c的末尾,最后倒序输出字符串c~

代码展示

cpp 复制代码
#include <iostream>
#include <algorithm>

using namespace std;

int main() {
    string a, b, c;
    cin >> a >> b;

    int lena = a.length(), lenb = b.length();

    reverse(a.begin(), a.end());
    reverse(b.begin(), b.end());

    if (lena > lenb)
        b.append(lena - lenb, '0');
    else
        a.append(lenb - lena, '0');

    char str[14] = {"0123456789JQK"};

    for (int i = 0; i < a.length(); i++) {
        if (i % 2 == 0) {
            c += str[(a[i] - '0' + b[i] - '0') % 13];
        }
        else {
            int temp = b[i] - a[i];
            if (temp < 0) temp = temp + 10;
            c += str[temp];
        }
    }
    for (int i = c.length() - 1; i >= 0; i--)
        cout << c[i];

    return 0;
}
相关推荐
猫猫头有亿点炸2 分钟前
C语言斐波拉契数列2.0
c语言·开发语言·算法
刚入坑的新人编程10 分钟前
C++多态
开发语言·c++
写个博客21 分钟前
代码随想录算法训练营第二十六天
算法
QUST-Learn3D31 分钟前
高精度并行2D圆弧拟合(C++)
开发语言·c++
明月醉窗台1 小时前
Qt 入门 6 之布局管理
c语言·开发语言·c++·qt
海底火旺1 小时前
寻找缺失的最小正整数:从暴力到最优的算法演进
javascript·算法·面试
优美的赫蒂1 小时前
理解欧拉公式
线性代数·算法·数学建模
云小逸1 小时前
【C++】继承
开发语言·c++
Pasregret1 小时前
策略模式:动态切换算法的设计智慧
算法·bash·策略模式
努力学习的小廉2 小时前
【C++】 —— 笔试刷题day_21
开发语言·c++·算法