乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范。从小白开始逐步掌握用编程解决问题。
PAT (Basic Level) Practice 1005 继续(3n+1)猜想
问题分析
题目提出一个新概念"关键数", 并给出其定义: 在进行(3n+1)猜想时, 不会出现在其他给定数值的计算过程中的, 就是关键数。
这意味着, 如果我们要计算给定的一组数中, 哪些数是关键数, 则需要对这些数进行(3n+1)猜想的计算,
然后记录计算过程中出现的各个数, 等到完全计算完毕后与给定的数值进行对比, 得到差异即可。
统计出现过的数值
- 不能记录最初输出的数值本身。由于关键数是说没有出现在其他数的计算过程中, 所以不包括起始数值本身。
- 鉴于第1点, 所以需要先计算(3n+1)猜想的下一个值, 然后记录该该值。
- 如果下一个值已经被计算过了, 那么由下一值能够覆盖的数也都应该被计算过了, 这时可以直接break;
完整描述步骤
- 获取输入: 数值个数, 各个数值
- 初始化统计器:
- 该数字已经被计算过的标志位