将每个数分解为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; }