OD-分糖果(Python)迭代+递归
分糖果
题目描述
小明从糖果盒中随意抓一把糖果
每次小明会取出一半的糖果分给同学们
当糖果不能平均分配时
小明可以从糖果盒中(假设盒中糖果足够)取出一个或放回一个糖果
小明至少需要多少次(取出放回和平均分配均记一次)能将手中糖果分至只剩一颗
输入描述
抓取糖果数(小于1000000
),例如15
输出描述
最少分至一颗糖果的次数,例如5
示例一
输入
15
Copy
输出
5
def solution(x):count = 0while x != 1:if x == 3:count += 2breakif x % 2 == 0:x = x // 2elif (x + 1) % 4 == 0 or x == 1:x += 1else:x -= 1count += 1print(count)def solution_1(y):if y == 1:return 0elif y % 2 == 0:return solution_1(y // 2) + 1else:return min(solution_1(y - 1), solution_1(y + 1)) + 1if __name__ == '__main__':x = int(input())solution(x)