分析:
观察样例,可以看出似乎与二进制有关。那么手推一下,发现序列是这样的:0,1,1,2,2,2,2,3……
可以得出,答案的通项公式就是 ⌊ log 2 n ⌋ \left \lfloor{\log _{2} n}\right \rfloor ⌊log2n⌋
代码:
#include<bits/stdc++.h>
using namespace std;
namespace FAST_IO
{
template<typename T> void read(T &a)
{
a=0;
int f=1;
char c=getchar();
while(!isdigit(c))
{
if(c=='-')
{
f=-1;
}
c=getchar();
}
while(isdigit(c))
{
a=a*10+c-'0';
c=getchar();
}
a=a*f;
}
template <typename T> void write(T a)
{
if(a<0)
{
a=-a;
putchar('-');
}
if(a>9)
{
write(a/10);
}
putchar(a%10+'0');
}
template <typename T> void writeln(T a)
{
write(a);
puts("");
}
}
int main()
{
int tmp;
while(cin>>tmp)
{
if(tmp==0)
{
return 0;
}
cout<<(int)log2(tmp)<<endl;
}
}