PAT 乙级 1048
题目
题目地址: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的更多相关文章
- PAT 乙级 1048 数字加密(20) C++版
		1048. 数字加密(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求实现一种数字加密方法.首先固 ... 
- PAT 乙级 1048.数字加密 C++/Java
		题目来源 本题要求实现一种数字加密方法.首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 13 取余——这里用 ... 
- C#版 - PAT乙级(Basic Level)真题 之 1021.个位数统计 - 题解
		版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - P ... 
- PAT乙级真题及训练题  1025. 反转链表 (25)
		PAT乙级真题及训练题 1025. 反转链表 (25) 感觉几个世纪没打代码了,真是坏习惯,调了两小时把反转链表调出来了,心情舒畅. 这道题的步骤 数据输入,数组纪录下一结点及储存值 创建链表并储存上 ... 
- PAT 乙级 1024
		题目 题目地址:PAT 乙级 1024 题解 模拟题,重点需要考虑到各种不同情况:简单来说一下: 因为输入格式固定,所以把不同的部分分别存储和处理可以在很大程度上简化运算:其中需要考虑最多的就是小数部 ... 
- PAT 乙级 1017
		题目 题目地址:PAT 乙级 1017 题解 粗看是一道大数除法题,实际上只不过是通过字符数组模拟除法过程,理解之后还是比较简单的: 具体分析一下本题: 因为题设中的除数(n)是一位整数,因此大幅简化 ... 
- PAT 乙级 1015
		题目 题目地址:PAT 乙级 1015 题解 常规题,难点在于理清楚排序规则,通过比较简洁的方式进行编码: 在这里我选择使用vector进行存储,并使用sort方法排序,因为本题不是简单按照大小排序, ... 
- PAT 乙级 1003
		题目 题目地址:PAT 乙级 1003 题解 规律观察题,本题的关键在于把题读懂,同时还有几个比较容易疏忽的地方需要注意:总之这道题要考虑的东西更多,细节上也要特别注意: 规律:“如果 aPbTc 是 ... 
- PAT 乙级 1059
		题目 题目地址:PAT 乙级 1059 题解 开始我是从暴力循环的角度考虑这道题,大概计算了一下时间复杂度应该不会超,但是很不幸没有通过,时间超限:之后考虑搜索算法可能优化不太好,因此就把输入的序列先 ... 
随机推荐
- Oracle树查询总结
			最近在做公司的项目中遇到一个问题,多级级联导航菜单,虽然只有三级目录,但<li>中嵌套<ul>,数据库表结构如下: CREATE TABLE FLFL ( ID NUMBER ... 
- CCPC吉林站
			A.The Fool #include <bits/stdc++.h> using namespace std; inline int read() { ,f=;char ch=getch ... 
- 去除vue路由跳转地址栏后的哈希值#
			去除vue路由跳转地址栏后的哈希值#,我们只需要在路由跳转的管理文件router目录下的index.js中加上一句代码即可去掉哈希值# mode:"history" import ... 
- ssis-oracle 数据流任务
			[OLE DB 源 1 [16]] 错误: SSIS 错误代码 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER.对连接管理器“F360DB”的 A ... 
- feign客户端传参数报错
			新手经常遇到的错误 Caused by: java.lang.IllegalStateException: Method has too many Body parameters feign多参数问题 ... 
- SpringCloud服务的平滑上下线
			http://blog.itpub.net/31545684/viewspace-2215300/ spring cloud eureka 参数配置 https://www.jianshu.com/p ... 
- Git、Github和GitLab的区别及与SVN的比较
			个人理解: SVN适合领导啊,大家一起在加班,看你进度什么的,git则不必如此,忙完传上来完活. 一.含义: 百度上这样介绍的: Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效. ... 
- 在CentOS7上源码安装php7--Install php7 from source on CentOS7
			首先下载php源码包并解压: # wget http://cn2.php.net/get/php-7.0.9.tar.gz/from/this/mirror # .tar.gz # cd php- 然 ... 
- Google Play发布App中遇到"多个APK:版本1未提供给任何设备配置使用。"问题的解决方法
			在google play上发布apk,当上传了apk文件,填写了相关的内容信息和介绍图片.图标后,出现“发布应用”始终灰色无法点击,查看原因显示如下问题: 其中支持的设备数量始终显示为0,怀疑是编译出 ... 
- [make error ]ubuntu显示不全
			make时候,输出到文件里 make >&makelog 就会自动出现一个makelog 会慢一些,不要急. 
