万世不竭

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

古人云:一尺之棰,日折其半,万世不竭。意思是说一尺长的短木棍,每天将其折成两半,那么一万年也折不完。说的非常有道理,但是如果我们设置一个最小单位的话,比如木棍小于 4cm 就视为不存在的,是可以折完的。但是我们需要折多少次,才能把一根木棍折完呢?

一根为长为奇数 l 的木棍折半为 l/2,l/2+1。

Input

输入数据有多组(数据组数不超过 100),到 EOF 结束。

对于每组数据,输入 1 行,包含 1 个整数 n (4 <= n <= 10^6),代表木棍长度。

Output

对于每组数据,输出一行,表示需要折多少次才能将木棍折完。

Sample Input

12

Sample Output

3

Hint

示例解释:

12 -> 6,6

6 -> 3,3

6 -> 3,3

#include <stdio.h>
#include <stdlib.h>
int sum;
void f(int n)
{
    if(n<4)
        return;
    else
    {
        sum++;
        if(n%2==0)
        {
            f(n/2);
            f(n/2);
        }
        else if(n%2==1)
        {
            f(n/2);
            f(n/2+1);
        }
    }
}
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        sum=0;
        f(n);
        printf("%d\n",sum);

    }
    return 0;