题目来源

本题要求实现一种数字加密方法。首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 13 取余——这里用 J 代表 10、Q 代表 11、K 代表 12;对偶数位,用 B 的数字减去 A 的数字,若结果为负数,则再加 10。这里令个位为第 1 位。

输入格式:

输入在一行中依次给出 A 和 B,均为不超过 100 位的正整数,其间以空格分隔。

输出格式:

在一行中输出加密后的结果。

输入样例:

1234567 368782971

输出样例:

3695Q8118

分析:

1. 当A的长度大于B的长度,B的高位补0。当A的长度小于B的长度,A的高位补零(注意这里有坑!)

2. 个位为第一位(奇数位),那么从尾部遍历字符串,用一个count = 1来记录当前是奇数位还是偶数位

3. 用一个string来保存0-K,计算得到的结果res,就保存string[res]到newString中,最后逆序输出newString就可以了

4. 坑:一开始我卡在了测试点2和测试点5,这两个测试点都是A比B长的情况,我的代码是用B的长度来进行循环的,所以对B高位补0之后,要更新B的长度 lengthB = A.size();

C++实现:

 #include <iostream>
#include <vector>
#include <string>
using namespace std; int main()
{
string A, B;
vector<char> newString;
string num = "0123456789JQK";
cin >> A >> B;
int lengthA = A.size();
int lengthB = B.size();
int res = ;
if (lengthA < lengthB)
{
//A:001234567
//B:368782971
//短的补零
A.insert(, lengthB - lengthA, '');
}
else
{
//A:1234567
//B:0782971
B.insert(, lengthA - lengthB, '');
lengthB = lengthA; //注意这里有坑
} int count = ; //表示个位
for (int i = lengthB - ; i >= ; --i)
{
if (count % == )
{
res = (B[i] - '' + A[i] - '') % ;
newString.push_back(num[res]);
}
else if (count % == )
{
res = (B[i] - A[i]);
if (res < )
{
res += ;
}
newString.push_back(num[res]);
}
count++;
}
for (int i = newString.size() - ; i >= ; --i)
{
cout << newString[i];
}
return ;
}

Java实现:

PAT 乙级 1048.数字加密 C++/Java的更多相关文章

  1. PAT 乙级 1048 数字加密(20) C++版

    1048. 数字加密(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求实现一种数字加密方法.首先固 ...

  2. PAT(B) 1048 数字加密(Java)字符串

    题目链接:1048 数字加密 (20 point(s)) 题目描述 本题要求实现一种数字加密方法.首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运 ...

  3. PAT Basic 1048 数字加密 (20 分)

    本题要求实现一种数字加密方法.首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 13 取余——这里用 J 代表 ...

  4. PAT 乙级 1019.数字黑洞 C++/Java

    题目来源 给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字.一直重复这样做,我们很快会停在有 ...

  5. PAT 乙级 1012.数字分类 C++/Java

    题目来源 给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A​1​​ = 能被 5 整除的数字中所有偶数的和: A​2​​ = 将被 5 除后余 1 的数字按给出顺序进行交错求和, ...

  6. PAT 1048 数字加密(20)(代码+思路)

    1048 数字加密(20)(20 分) 本题要求实现一种数字加密方法.首先固定一个加密用正整数A,对任一正整数B,将其每1位数字与A的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对13取 ...

  7. PAT-乙级-1048. 数字加密(20)

    1048. 数字加密(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求实现一种数字加密方法.首先固 ...

  8. PAT 乙级 1048

    题目 题目地址:PAT 乙级 1048 思路 这道题坑的地方在于:即使B的长度小于A,仍然要对B补齐,也就是说最终结果的长度取决于A和B中长度更长的那一项:即只要A.B长度不一致,就要对短的一个进行补 ...

  9. PAT(B) 1019 数字黑洞(Java)

    题目链接:1019 数字黑洞 (20 point(s)) 分析 输入正整数n后,将n转成int型数组nArr[4] 用Arrays.sort(int[] a)方法将数组nArr非递减排序 很显然,非递 ...

随机推荐

  1. 树形DP(超详细!!!)

    一.概念 1.什么是树型动态规划 树型动态规划就是在“树”的数据结构上的动态规划,平时作的动态规划都是线性的或者是建立在图上的,线性的动态规划有二种方向既向前和向后,相应的线性的动态规划有二种方法既顺 ...

  2. oracle--BBED (dump 深入实践三)

    一,工具介绍 bbed是Block Browser and Editor(块浏览编辑器)的缩写,它是Oracle数据库在安装时一起附带的工具. 一般此工具倾向于仅作为Oracle内部使用,且Oracl ...

  3. idea找不到tomcat,找不到Tomcat server

    打开settings  添加即可 如果再没有,可能需要先安装timcat插件

  4. http & https & http/2 & SPDY & WebSocket

    参考文章: http https :https://www.jianshu.com/p/d286d097e56b https & ssl:https://www.jianshu.com/p/2 ...

  5. for...in 、for...of 、forEach 的区别

    无论是for…in还是for…of语句都是迭代一些东西.它们之间的主要区别在于它们的迭代方式. 1.for…in 语句以原始插入顺序迭代对象的可枚举属性.2.for…of 语句遍历可迭代对象定义要迭代 ...

  6. golang web 方案

    概要 开发 web 框架 数据库 认证 日志 配置 静态文件服务 上传/下载 发布 docker 打包 部署中遇到的问题 时区问题 概要 轻量的基于 golang 的 web 开发实践. golang ...

  7. lombok的使用以及其中的坑

    1.lombok踩坑与思考 https://www.cnblogs.com/heyonggang/p/8638374.html 2.Lombok介绍.使用方法和总结 https://www.cnblo ...

  8. W5500嵌入式开发

    W5500是韩国一款集成全硬件 TCP/IP 协议栈的嵌入式以太网控制器,W5500同时也是一颗工业级以太网控制芯片,最近发现我们国内也有和W5500 芯片一样芯片 介绍给大家 如下图:

  9. Redis配置过程中的问题

    记录一下配置过程中的坑~~ 当Redis在服务器上安装完成后,get.set没有问题了,接下来在程序中使用看看... 首先 在配置文件redis.conf中,默认的bind 接口是127.0.0.1, ...

  10. mysql 实现row_number功能

    需求: 解答:由于mysql 中没有类似oracle中的 row_number功能,要实现row_number 可以使用如下功能: Select pkid,(@row_number:=@row_num ...