学习Python从娃娃抓起!记录下蓝桥杯备考比赛学习过程中的题目,记录每一个瞬间。
附上汇总贴:蓝桥杯备考冲刺必刷题(Python) | 汇总-CSDN博客
【题目描述】
在一个神秘的世界中,存在一个传说中的神秘花园,被认为拥有无限的知识。但要进入这个花园,你必须解决花园入口处的一道神秘数学难题。这个难题与一个特殊的数学函数相关,称为“神秘函数”。
神秘函数
S
(
x
)
S(x)
S(x)的定义如下:
- 当 x x x为 0 0 0时, S ( 0 ) = 1 S(0)=1 S(0)=1。
- 当 x x x为偶数时, S ( x ) = S ( x / 2 ) S(x)=S(x/2) S(x)=S(x/2)。
- 当 x x x为奇数时, S ( x ) = S ( x − 1 ) + 1 S(x)=S(x-1)+1 S(x)=S(x−1)+1。
你需要编写一个程序,计算给定正整数
x
x
x,神秘函数
S
(
x
)
S(x)
S(x)的值。只有当你正确解决了这道难题,才能获得通行证,进入神秘花园探索其中的知识宝藏。
【输入】
输入包含一个正整数
x
(
1
≤
x
≤
1
0
6
)
x(1\le x\le 10^6)
x(1≤x≤106),表示你要解决的神秘函数问题。
【输出】
输出一个整数,表示神秘函数
S
(
x
)
S(x)
S(x)的值,即你成功解决问题后得到的答案。
【输入样例】
7
【输出样例】
4
【代码详解】
a = [0 for i in range(1000005)]
a[0] = 1
for i in range(0, 1000000+1): # 预处理所有x对应的S(x)
if i%2==0:
a[i] = a[i//2]
else:
a[i] = a[i-1] + 1
n = int(input()) # 输入n
print(a[n]) # 直接输出答案
【运行结果】
7
4