题目

题目地址: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. pgfincore外部OS缓存安装

    su - root cd /opt/soft_baktar -zxvf pgfincore-1.0.gz cd pgfincore-b2b53deexport PATH=/opt/pgsql963/b ...

  2. EF升级 反射重载方法ApplyConfiguration

    protected override void OnModelCreating(ModelBuilder builder) { base.OnModelCreating(builder); //var ...

  3. Domination

    题目链接 #include <bits/stdc++.h> using namespace std; typedef long long ll; inline ll read(){ , f ...

  4. 破解百度翻译页面api参数加密

    我们的目标 https://fanyi.baidu.com/      找到获取翻译的请求 是这个 https://fanyi.baidu.com/v2transapi 查看一下post提交的表单,是 ...

  5. Java @Validated 遇到的大坑

    我在一个Controller内,在两个方法内使用@Validated,这是两个POST方法会进入的方法,这两个方法的实体类的命名(下图红框内容)不能一样,一样的话就会导致第二个在页面显示不出来错误信息 ...

  6. 关于office转换成pdf组件服务中的DCOM配置问题

    在开始->运行 中录入“dcomcnfg” 单击“确定”后弹出“组件服务”窗口 依次选择“组件服务”->“计算机”->“我的电脑”->“DCOM配置” 在“DCOM配置”下找到 ...

  7. JavaScript中var a=b=c=d的发现

    看了别人的博客随手记录下 先看一下以下的代码 var a=1,b=2,c=3; (function(){ var a=b=1; })(); console.log(a); console.log(b) ...

  8. 织梦DEDECMS会员中心发布文章修改提示"数据校验不对,程序返回"

    一.文件:member/inc/inc_archives_function.php 找到函数 function PrintAutoFieldsEdit(&$fieldset, &$fi ...

  9. bt5r3开启远程登录

    sshd-generate /etc/init.d/ssh restart

  10. Vue.js + Webpack + ECMAScript 6 入门教程

    Vue.js学习教程 1.Vue.js——60分钟快速入门 2.Vue.js——60分钟组件快速入门(上篇) 3.Vue.js——60分钟组件快速入门(下篇) 4.Vue.js——基于$.ajax实现 ...