#include <iostream>
using namespace std;
int main()
{
int ans;
int n;
while(cin>>n)
{
if(n == 0)
break;
ans = 0;
while(n != 1)
{
if(n & 1)
n += (n+1)/2;
else
n >>= 1;
ans++;
}
cout<<ans<<endl;
}
return 0;
}
这个题目关键在怎么证明在执行过程中n不溢出,并且n会到1.深究一下还是有意思的数学问题……