小明从糖果盒中随意抓一把糖果,每次小明会取出一半的糖果分给同学们。
当糖果不能平均分配时,小明可以选择从糖果盒中(假设糖果足够)取出一个糖果或放回一个糖果,小明最少需要多少次(取出,放回、和平均分配均记一次)能将手中糖果分至一颗。
输入描述:
抓取的糖果数(<10000000000):
15
输出描述:
至少分至一颗糖果的次数:
5
备注:
解释:(1)15+1=16 (2)16/2=8 (3)8/2=4 (4)4/2=2 (5)2/2=1
示例1:
15
输出:
5
def func():
nums = int(input())
count = 0
while True:
if nums == 1:
break
if nums % 2 == 1:
if (nums + 1) % 4 == 1:
nums = (nums - 1) // 2
count += 2
else:
nums = (nums + 1) // 2
count += 2
else:
nums % 2 == 0
nums = nums // 2
count = count + 1
print(count)
if __name__ == '__main__':
func()



