问题
分析
可以分为n是偶数和奇数两种情况
n是偶数,那么分为两部分1-n/2,n/2+1-n,后半部分减去n/2的值,就和前半部分一样了
n是奇数,可以分为两部分1-n/2,n/2+1-n,后半部分减去n/2+1的值,就变成了0和1-n/2的值
所以可以写出递推式f(n)=f(n/2)+1
#include <iostream>
#include <cstdio>
using namespace std;
int n;
int main(void){
while(scanf("%d",&n)==1){
int ans=1;
while(n!=1){
++ans;
n>>=1;
}
printf("%d\n",ans);
}
return 0;
}
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int n;
int main(void){
while(scanf("%d",&n)==1){
int ans=1;
ans=log(n+0.1)/log(2)+1;
printf("%d\n",ans);
}
return 0;
}