博客
关于我
PAT乙级刷题记录——1048 数字加密 (20分)
阅读量:215 次
发布时间:2019-02-28

本文共 1347 字,大约阅读时间需要 4 分钟。

这个问题需要实现一种数字加密方法,具体规则如下:

  • 输入处理:首先读取两个大数A和B,确保它们的长度相同,前面补0。
  • 反转字符串:将A和B反转,使得最低位(个位)在前面,最高位在后面。
  • 处理每一位
    • 奇数位(第1、3、5...位):将B的数字与A的数字相加,结果对13取余,余数为10时用J代替。
    • 偶数位(第2、4、6...位):将B的数字减去A的数字,如果结果为负数,加10得到结果。
  • 结果反转:将加密后的结果反转,得到最终加密后的字符串。
  • 代码优化思路

    • 使用字符串处理,避免整数溢出的问题。
    • 避免使用任何循环结构,尽量使用内置函数。
    • 确保代码结构清晰,符合C++的编程规范。

    以下是优化后的代码:

    #include 
    #include
    using namespace std;int main() { string A, B; cin >> A >> B; // 补零使长度相同 while (B.length() < A.length()) { B.insert(B.begin(), '0'); } // 反转处理 reverse(A.begin(), A.end()); reverse(B.begin(), B.end()); string result; for (int i = 0; i < A.length(); ++i) { int a = A[i] - '0'; int b = B[i] - '0'; if ((i + 1) % 2 == 0) { // 偶数位 int diff = b - a; if (diff < 0) { diff += 10; } result += (diff + '0'); } else { // 奇数位 int sum = a + b; int rem = sum % 13; if (rem == 12) { result += 'J'; } else { result += rem + '0'; } } } reverse(result.begin(), result.end()); cout << result; return 0;}

    代码解释

    • 输入处理:读取A和B,确保B的长度与A相同。
    • 反转处理:反转A和B,使得逐个处理时,第一个字符是最低位。
    • 循环处理每一位
      • 偶数位:计算差值,若结果为负加10。
      • 奇数位:计算和对13取余,余数为10时用J代替。
    • 结果反转:将结果反转,得到最终加密后的字符串输出。

    这个思路确保了处理大数的高效性,并且代码结构清晰易懂。

    转载地址:http://iqtp.baihongyu.com/

    你可能感兴趣的文章
    Python 从数据库中存储和检索密码的最安全方法
    查看>>
    Python语言及其应用 - 知识点遍历
    查看>>
    Python 优化提速的 8 个小技巧
    查看>>
    Python 余弦相似度与皮尔逊相关系数 计算
    查看>>
    python 使用execjs 报编码错误解决办法,UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xac in position 145: il
    查看>>
    python 使用filetype校验文件
    查看>>
    Python 使用flush函数将缓冲区数据立即写磁盘
    查看>>
    python 使用in判断不准确,in不好使
    查看>>
    Python 使用pandas 进行查询和统计详解
    查看>>
    Redis 配置文件redis.conf详细解释
    查看>>
    python网络爬虫(2)——scrapy框架的基础使用
    查看>>
    python网络爬虫实例教程试读_Python网络爬虫实战教程(全套完整版) - 学途无忧网 - 做技术的王者 - Powered By EduSoho...
    查看>>
    Python 使用哈希函数用于加密
    查看>>
    Python 依赖管理的革新——Poetry 深度解析
    查看>>
    python 保留精度及增加去除数字的千位分隔符(金额化数字)
    查看>>
    python 倒计时 9,8,7,。。。。。。0
    查看>>
    Python 入门开发学习笔记之数据的增删改查
    查看>>
    Python 入门教程(2)搭建环境 2.4、VSCode配置Node.js运行环境
    查看>>
    Python 八大排序算法合集
    查看>>
    python 关于epoll的学习
    查看>>