题解
找规律可以发现每次将后n/2+1,...,nn/2+1,...,nn/2+1,...,n统一减去n/2+1n/2+1n/2+1,问题转化为两个等价的1,2,...,n/21,2,...,n/21,2,...,n/2。
故:fn=fn/2+1f_n=f_{n/2}+1fn=fn/2+1
代码
#include<bits/stdc++.h>
using namespace std;
int n;
int F(int x){return x==1?1:(F(x/2)+1);}
int main(){
for(;~scanf("%d",&n);)
printf("%d\n",F(n));
}