首页 > 试题广场 >

牛牛打响指

[编程题]牛牛打响指
  • 热度指数:929 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
牛牛在地上捡到了一个手套,他带上手套发现眼前出现了很多个小人,当他打一下响指,这些小人的数量就会发生以下变化:如果小人原本的数量是偶数那么数量就会变成一半,如果小人原本的数量是奇数那么数量就会加一。现在牛牛想考考你,他要打多少次响指,才能让小人的数量变成1。

输入描述:
每个输入包含一个测试用例。
输入的第一行包括一个正整数,表示一开始小人的数量N(1<=N<=10^100)。


输出描述:
对于每个用例,在单独的一行中输出牛牛需要打多少次响指才能让小人的数量变成1。
示例1

输入

10000

输出

20
这个题用python可以直接模拟
n = int(input())
step = 0
while n > 1:
    if n&1:
        n = (n + 1) >> 1
        step += 2
    else:
        n >>= 1
        step += 1
print(step)

发表于 2023-02-07 15:06:58 回复(0)

热门推荐

通过挑战的用户