将每个数分解为2^0+2^1+...一直到最大能到达的2^k,答案就是k+2。

不要问我为什么TLE掉?!。。。。

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
long long m,cnt=0;
int main()
{
    scanf("%lld",&m);
    long long base=1;
    while (m>0)
    {
        m-=base;
        base<<=1;
        cnt++;
    }
    printf("%lld\n",cnt);
    return 0;
}