测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A38986. 角谷猜想问题描述角谷猜想是指任何一个正整数如果是偶数则变为其一半,如果是奇数则变为其 3 倍加 1,最终都将变为 1。如果为 1,则按照规则将变为 4,4 则变为 2,2 则变为 1,进入无限循环。该猜想尚未得到数学证明;本题先后输入两个正整数,输出该范围内角谷猜想变化步骤最多的数及其步骤;如果输入的第 1 个数大于第 2 个数,则交换,如 20 10,则计算出 10 到 20(含)之间变化步骤…

填空题 中等

题目描述

角谷猜想

问题描述

角谷猜想是指任何一个正整数如果是偶数则变为其一半,如果是奇数则变为其 3 倍加 1,最终都将变为 1。如果为 1,则按照规则将变为 4,4 则变为 2,2 则变为 1,进入无限循环。该猜想尚未得到数学证明;

本题先后输入两个正整数,输出该范围内角谷猜想变化步骤最多的数及其步骤;如果输入的第 1 个数大于第 2 个数,则交换,如 20 10,则计算出 10 到 20

(含)之间变化步骤最多的数及其步骤。

输入描述

输入两行,第 1 行输入范围起点,回车后第 2 行输入范围的终点。

特别提示:常规程序中,输入时好习惯是有提示。考试时由于系统限定,输入时所有 input()函数不可有提示信息。

输出描述

输出两行,先输出变化步骤最大的数,然后输出步骤数量。

步骤计算时,包含数本身,例如:10 的变化过程是 10,5,16,8,4,2,1,变化步骤数为 7。

样例输入 1

10

20

样例输出 1

18

21

样例输入 2

100

200

样例输出 2

171

125

参考答案

First = int(input()) Second = int(input()) if First > Second: First, Second = Second, First maxStep = 0 maxNum = First for i in range(First,Second+1): N = i stepCount = 1 while N != 1: stepCount += 1 if N % 2 == 0: N = N // 2 else: N = N * 3 + 1 if stepCount > maxStep: maxStep = stepCount maxNum = i print(maxNum) print(maxStep)
上一题 下一题