PAT 乙级 1048
2024-08-25 11:20:05
题目
题目地址: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 ;
}
最新文章
- 道路翻新 (Revamping Trails, USACO 2009 Feb)
- CodeForces - 405C
- IIS5与IIS6 应用程序生命周期和页生命周期
- poj 3295 Tautology
- Lisp使用Lambda语法
- Apple Tree(需要预处理的树状数组)
- 网卡及MAC和PHY的区别
- js 的其它运算符和优先级
- JS中prototype属性-JS原型模式
- 【学习opencv第七篇】图像的阈值化
- Asp.Net Web Api 与 Andriod 接口对接开发
- (一)Python之猜数游戏
- jenkins插件安装与升级[三]
- 蓝桥杯 求最大值 dp
- 从集合的无序性看待关系型数据库中的";序";
- UML建工工具
- java获得上下周及本周日期
- android ------ RecyclerView 模仿淘宝购物车
- resin4.0.25 安装配置 及结合eclipse开发
- 使用IdentityServer4实现一个简单的Oauth2客户端模式授权