这个题是有规律的。只要找1的位置就行。当1的位置在<n的时候就以原位置2倍的变化改变。

当位置在>n时就以原位置减n后2倍减的改变变化。

代码:

View Code
 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int x,i,cur;
 6     while(cin>>x)
 7     {
 8         cur=2; 
 9         for(i=1;cur!=1;i++) 
10             if(cur<=x)
11                 cur=cur*2;
12             else
13                 cur=(cur-x)*2-1;
14         cout<<i<<endl; 
15     } 
16 } 

 

posted on 2012-09-06 18:19  xinmenghuairi  阅读(190)  评论(0编辑  收藏  举报