题目描述
小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,
但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币。
魔法机器1:如果投入x个魔法币,魔法机器会将其变为2x+1个魔法币
魔法机器2:如果投入x个魔法币,魔法机器会将其变为2x+2个魔法币
小易采购魔法神器总共需要n个魔法币,所以小易只能通过两台魔法机器产生恰好n个魔法币,小易需要你帮他设计一个投入方案使他最后恰好拥有n个魔法币。
输入描述:
输入包括一行,包括一个正整数n(1 ≤ n ≤ 10^9),表示小易需要的魔法币数量。
输出描述:
输出一个字符串,每个字符表示该次小易选取投入的魔法机器。其中只包含字符'1'和'2'。
示例1
输入
10
输出
122
思路
首先判断需要得到的魔法币奇偶性,可知:如果是偶数,最后一步是‘2’;如果是奇数,最后一步是‘1’.
由当前须得结果反推上一步采用的机器编号
机器1:x = (n-1)/2
机器2:x = (n-2)/2
n = int(input())
# 递归函数
def selectPick(n):
if n<1:
return ''
elif n%2 == 0:
return selectPick((n-2)/2)+'2'
else:
return selectPick((n-1)/2)+'1'
s = selectPick(n)
print(s)
运行结果:可通过
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。