0%

AtCoder ABC 215 B

題目連結AtCoder Beginner Contest 215: B - log2(N)

題目敘述

輸入正整數\(N\), 輸出最大整數\(k\) 使\(2^{k} \le N\).

範例輸入 1

1
1000000000000000000

範例輸出 1

1
59

範例輸入 2

1
6

範例輸出 2

1
2

題解

用迴圈循環計算。 在整數運算時 ans<<=1 相當於 ans*=2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<bits/stdc++.h>
using namespace std;

int main(){
ios::sync_with_stdio(0);cin.tie(0);

long long n;
cin>>n;

int ct=0;
long long ans=1;
while(ans*2<=n){
ans<<=1;
ct++;
}
cout<<ct;
}

注意!

用內建函式 log2(n) 不會過的喔!