#AT1266. Caracal和怪物

Caracal和怪物

题目描述

Caracal 在打怪。
一开始,他的面前有一只怪,这个怪有 HH 点血量。

每一次,他可以选择一个怪物进行攻击,具体方式如下:

  1. 如果这只怪兽的血量为 11 ,变为 00

  2. 如果这只怪兽的血量 X>1X > 1 ,那么这只怪兽将分裂成两只,每只的血量为 X/2\lfloor X/2 \rfloor

(其中 r\lfloor r \rfloor 表示 r\le r 的整数中,最大的一个)

当所有存在的怪物血量全部 0\le 0 时,Caracal 就获胜了。

输出他在获胜之前的攻击次数。

输入

输入一个整数HH

输出

找出Caracal在获胜之前需要攻击的最小次数。

2
3

样例解释

当Caracal攻击初始怪物时,它消失了,然后出现了两个怪物,每个怪物的健康值为 1。

然后,Caracal可以攻击这两个新的怪物中的每一个一次,以总共三次攻击获胜。

4
7
1000000000000
1099511627775

提示

  • 1  H  1012 1\ \leq\ H\ \leq\ 10^{12}