前言
之前为了准备PTA的考试有看一些攻略,别人推荐了胡凡的《算法笔记》,为了不无章法的乱刷题,现在开始按书中的顺序刷题。从第三章最简单的开始找找感觉,培养培养自信。
题目
B1001 害死人不偿命的(3n+1猜想)

-
思路
感觉这里就是按题目给的规则去暴力算,求次数。这里和一般的用%2的方式求奇偶不同的是,我采用的|0x01的方式。 -
Code in C++
#include <iostream>
int main()
{
int n;
std::cin >> n;
int steps = 0;
while (n!=1) {
++steps;
if (n & 0x01) {
// 奇数
n = ((3*n) + 1 ) / 2;
} else {
n = n / 2;
}
}
std::cout << steps << std::endl;
return 0;
}
B1002 写出这个数【误刷】

-
题目解读
这里n的值范围很大,考虑直接用字符串来求值。然后需要一个数字和字符串的映射。 -
思路
为了不再一位一位获取数字再反向输出,这里直接将计算的数字和转换成字符串,然后映射的键值类型也设置为字符型。 -
Code in C++
#include <iostream>
#include <string>
#include <map>
std::map<char,std::string> table{
{
'0',"ling"},
{
'1'

本文按照胡凡的《算法笔记》顺序,详细解析了PTA上的一些算法题目,包括B1001的(3n+1猜想)、B1002的数字转换、B1011的A+B和C、B1016的部分A+B以及B1026的程序运行时间转换。针对每个题目,作者提供了思路分析和C++代码实现,特别注意了数值范围和溢出问题。
最低0.47元/天 解锁文章
686

被折叠的 条评论
为什么被折叠?



