> 文章列表 > OD-分糖果(Python)迭代+递归

OD-分糖果(Python)迭代+递归

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)