前言
之前为了准备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'