#4205. 角谷猜想(23-3二级)
角谷猜想(23-3二级)
🔢 角谷猜想区间最大步数统计
📘【问题描述】
-
- 角谷猜想(又称 Collatz 猜想) **的规则如下:
- 对于任意一个正整数:
- 若是 偶数,则变成它的一半;
- 若是 奇数,则变成它的 3倍加 1;
- 不断重复上述操作,最终所有数都将变为 1;
- 到达 1 后会进入循环:1 → 4 → 2 → 1 → …
请你编程计算:在输入的两个正整数所构成的区间范围内(包括端点), 变化步骤最多的数字和 对应的步骤数。
- 如果输入的第一个数大于第二个数,程序应自动交换两个数;
- 步骤计算应包括起始数字本身。例如:
- 10 的变化过程为:10 → 5 → 16 → 8 → 4 → 2 → 1,共 7 步。
📥【输入格式】
共两行,分别输入两个正整数 和 ,表示区间范围的起止数字。
📤【输出格式】
共两行:
- 第 1 行:在 区间内 变化步骤最多的数字;
- 第 2 行:该数字的 * *变化步骤数 * *。
🎯【样例输入 1】
10
20
🎯【样例输出 1】
18
21
🎯【样例输入 2】
100
200
🎯【样例输出 2】
171
125
🎯【样例输入 3】
500
300
🎯【样例输出 3】
327
144
🧠 解题思路提示
- 使用
for
循环遍历区间内的每个数字; - 对每个数字使用
while
模拟角谷变换过程; - 使用变量记录最大步数和对应数字;
- 注意处理 a > b 的情况,需交换后再处理。
⏱️ 复杂度分析
- 时间复杂度:约 ,每个数最多变化 步;
- 空间复杂度:,未使用额外数组。