问题描述
读入一个整数 n。如果每次让 n 变为 n 整除 2 ,请问多少次之后 n 变为 0。
输入格式
输入包含一个整数 n。
输出格式
输出一个整数,表示多少次后变为 0。
样例输入 1
1
样例输出 1
1
样例输入 2
10
样例输出 2
4
评测用例规模与约定
对于所有评测用例,1≤ n ≤1000000。
CODE:
1.while循环 O(log2(n))
#include <bits/stdc++.h>
using namespace std;
long long n,ans;
int main(){
cin>>n;
while(n){
n=n/2;
ans++;
}
cout<<ans;
return 0;
}
2.for循环 O(log2(n))
#include <bits/stdc++.h>
using namespace std;
long long n,ans;
int main(){
cin>>n;
for(ans=0;n;ans++){
n/=2;
}
cout<<ans;
return 0;
}
3.log2(n) O(1)
#include <bits/stdc++.h>
using namespace std;
long long n;
int main(){
cin>>n;
cout<<(int)(log2(n))+1;
return 0;
}