E21459: How old are you?
math, http://cs101.openjudge.cn/pctbook/E21459
在一次社团迎新活动上,小翔和小叶抽到了How old are you这个游戏,游戏规则如下:
1)1号玩家任意报出一个正整数x
2)2号玩家开始进行如下计算:如果x是奇数,那么把他乘以3再加1;如果是偶数,那么就把他除以2,按照这样的规则重复处理
3)如果最终2号玩家能够得到1,那么2号玩家获胜,否则1号玩家获胜
由于小翔知道对于任意正整数x,经过有限的变换后都能够得到1,为了讨得小叶开心,他主动选择当1号玩家。而结果,自然每次都是小叶获胜。面对这样的情况,戏精小翔面露囧色的问到:“怎么老是你?
输入
一个正整数x (x>1)
输出
从输入整数到1的变换步骤,每一步为一行,每一步中描述计算过程
样例输入
sample1 in
3
sample1 out
3*3+1=10
10/2=5
5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1样例输出
sample2 in
5
sample2 out
5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1提示
如果:
x = 2
y = 7
print(f"{x}*3+1={y}")
会输出 2*3+1=7来源
cs101 2020 Final Exam
这是一个经典的 “角谷猜想”(Collatz Conjecture) 问题。
python
x = int(input())
while x != 1:
if x % 2 == 1: # x 是奇数
next_x = x * 3 + 1
print(f"{x}*3+1={next_x}")
x = next_x
else: # x 是偶数
next_x = x // 2
print(f"{x}/2={next_x}")
x = next_x