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;
}
相关推荐
学嵌入式的小杨同学几秒前
循环队列(顺序存储)完整解析与实现(数据结构专栏版)
c语言·开发语言·数据结构·c++·算法
Yu_Lijing几秒前
基于C++的《Head First设计模式》笔记——适配器模式
c++·笔记·设计模式
txinyu的博客几秒前
C++ 单例模式
c++·单例模式
点云SLAM1 分钟前
C++ 设计模式之工厂模式(Factory)和面试问题
开发语言·c++·设计模式·面试·c++11·工厂模式
shangjian0071 分钟前
AI大模型-机器学习-算法-线性回归-优化方法
人工智能·算法·机器学习
玖釉-5 分钟前
[Vulkan 学习之路] 05 - 缔结契约:创建逻辑设备 (Logical Device)
c++·windows·图形渲染
shangjian0075 分钟前
AI大模型-机器学习-算法-逻辑回归
人工智能·算法·机器学习
彩妙不是菜喵5 分钟前
c++:初阶/初始模版
开发语言·c++
王锋(oxwangfeng)6 分钟前
车道线拟合算法--自动驾驶
人工智能·算法·自动驾驶
computersciencer7 分钟前
一文快速理解线性回归的过程
算法·机器学习·回归·线性回归