题目

题目地址:PAT 乙级 1048

思路

这道题坑的地方在于:即使B的长度小于A,仍然要对B补齐,也就是说最终结果的长度取决于A和B中长度更长的那一项;即只要A、B长度不一致,就要对短的一个进行补齐操作

    在补齐过程中解决了之前一直忽略的一个问题——对于string类型的字符串按字符逐个进行赋值,这个过程中就出现了问题:

先来看一段代码

 #include <iostream>
#include <string>
using namespace std; int main() {
string str;
for (int i = ; i < ; i++)
str[i] = '';
cout << str.size() << endl;
cout << str << endl; return ;
}

那么这段代码的结果会是怎样的?我们来验证一下

0

显然并不是预想的结果,原因就在于string不能像char一样实现a[ i ] = b[ j ]这样的操作

对于string类型的字符串实现逐个字符赋值,需要使用 “+=” 这个算符实现,代码如下:

 #include <iostream>
#include <string>
using namespace std; int main() {
string str;
for (int i = ; i < ; i++)
str += ''; //赋值时一定注意格式是str,而不是str[i]
cout << str.size() << endl;
cout << str << endl; return ;
}

结果如下:


显然,这个结果才是我们希望看到的;

代码

 #include <iostream>
#include <string>
using namespace std; int main() {
string a, b;
string zero;
for (int i = ; i < ; i++)
zero += '';
string result;
cin >> a >> b;
int len_a = a.size();
int len_b = b.size();
if (len_a > len_b) {
string tmp = b;
string tmp1;
int len = len_a - len_b;
tmp1 = zero.substr(, len);
b = tmp1 + tmp;
}
else if (len_a < len_b) {
string tmp = a;
string tmp1;
int len = len_b - len_a;
tmp1 = zero.substr(, len);
a = tmp1 + tmp;
}
bool flag = true;
for (int i = a.size() - ; i >= ; i--) {
if (flag) {
int tmp = ((int(b[i]) - ) + (int(a[i]) - )) % ;
if (tmp == )
result.push_back('J');
else if (tmp == )
result.push_back('Q');
else if (tmp == )
result.push_back('K');
else
result.push_back(char(tmp + ));
flag = false;
}
else {
int tmp = ((int(b[i]) - ) - (int(a[i]) - ));
if (tmp < )
tmp += ;
result.push_back(char(tmp + ));
flag = true;
}
}
for (int i = result.size() - ; i >= ; i--)
cout << result[i];
cout << endl; return ;
}

PAT 乙级 1048的更多相关文章

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

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

  2. PAT 乙级 1048.数字加密 C++/Java

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

  3. C#版 - PAT乙级(Basic Level)真题 之 1021.个位数统计 - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - P ...

  4. PAT乙级真题及训练题 1025. 反转链表 (25)

    PAT乙级真题及训练题 1025. 反转链表 (25) 感觉几个世纪没打代码了,真是坏习惯,调了两小时把反转链表调出来了,心情舒畅. 这道题的步骤 数据输入,数组纪录下一结点及储存值 创建链表并储存上 ...

  5. PAT 乙级 1024

    题目 题目地址:PAT 乙级 1024 题解 模拟题,重点需要考虑到各种不同情况:简单来说一下: 因为输入格式固定,所以把不同的部分分别存储和处理可以在很大程度上简化运算:其中需要考虑最多的就是小数部 ...

  6. PAT 乙级 1017

    题目 题目地址:PAT 乙级 1017 题解 粗看是一道大数除法题,实际上只不过是通过字符数组模拟除法过程,理解之后还是比较简单的: 具体分析一下本题: 因为题设中的除数(n)是一位整数,因此大幅简化 ...

  7. PAT 乙级 1015

    题目 题目地址:PAT 乙级 1015 题解 常规题,难点在于理清楚排序规则,通过比较简洁的方式进行编码: 在这里我选择使用vector进行存储,并使用sort方法排序,因为本题不是简单按照大小排序, ...

  8. PAT 乙级 1003

    题目 题目地址:PAT 乙级 1003 题解 规律观察题,本题的关键在于把题读懂,同时还有几个比较容易疏忽的地方需要注意:总之这道题要考虑的东西更多,细节上也要特别注意: 规律:“如果 aPbTc 是 ...

  9. PAT 乙级 1059

    题目 题目地址:PAT 乙级 1059 题解 开始我是从暴力循环的角度考虑这道题,大概计算了一下时间复杂度应该不会超,但是很不幸没有通过,时间超限:之后考虑搜索算法可能优化不太好,因此就把输入的序列先 ...

随机推荐

  1. Ubuntu下安装wine plsql

    在电脑上安装了第二系统Ubuntu,但面临各种Linux不支持的开发软件也是束手无策.比如常用的Eclipse,PlSQl,Oracle,QQ等等,于是,上网查阅各种资料,最终的解决方案还是要依赖于w ...

  2. PJzhang:子域名发掘工具Sublist3r

    猫宁!!! 参考链接:https://www.freebuf.com/sectool/90584.html 作者上一次更新是2018年10月16日了,sublist3r中融合有另外一个子域名爆破工具S ...

  3. NSSM把.Net Core部署至 Windows 服务

    NSSM把.Net Core部署至 Windows 服务 https://www.cnblogs.com/emrys5/p/nssm-netcore.html 为什么部署至Windows Servic ...

  4. Announcing .NET Core 2.1

    Announcing .NET Core 2.1 https://blogs.msdn.microsoft.com/dotnet/2018/05/30/announcing-net-core-2-1/ ...

  5. java颜色代码对照表

    LightPink 浅粉色 #FFB6C1 255,182,193 Pink 粉红 #FFC0CB 255,192,203 Crimson 猩红 #DC143C 220,20,60 LavenderB ...

  6. missfresh问题记录

    一.基本信息 1.登陆机器    ssh lina02@mjump.missfresh.net -p2222 二.问题 1.分页问题:job_id为空时能查询出来(笛卡尔乘积),需要加上AND res ...

  7. RTC-IC-PCF2129

    一特点: -20~70度,SPI/I2C接口,1.2 V to 4.2 V ,可编程看门狗,时钟输出以便校准,闹钟输出,时间戳输出.低功耗高精度,电源切换,中断输出. SPI接口和I2C接口硬件接法: ...

  8. Batch梯度下降

    1.之前讲到随机梯度下降法(SGD),如果每次将batch个样本输入给模型,并更新一次,那么就成了batch梯度下降了. 2.batch梯度下降显然能够提高算法效率,同时相对于一个样本,batch个样 ...

  9. ruby 数组array 排序sort 和sort!

    1. sort → new_ary click to toggle source sort { |a, b| block } → new_ary Returns a new array created ...

  10. MyBatis配置文件之properties属性

    MyBatis提供3个方式使用properties: 1.property子元素. 2.properties文件. 3.程序代码传递. properties属性系给系统配置一些运行参数,一般放在XML ...