yokobuttonの不定期で競技プログラミングをするブログ

不定期で解けた競技プログラミングコンテストの問題を載せています。

AtCoder Beginner Contest 215 B - log2(N)

問題の要約
 正整数Nが与えられるので,2^k<=Nとなる最大の整数kを求めよ。
制約
 1<=N<=10^18
入力
 N
考え方
 1,入力例3からN=10^18のkは59なのでfor文で間に合う。
  for文はiを0から60まで回す。
  2^i<=Nの条件が満たされなくなったとき,k=i-1としてkを出力。
実際のプログラム
#include<iostream>
#include<cmath>

using namespace std;

int main(){
  long long N;
  cin >> N;
  
  long long k;
  for(int i = 0; i <= 60; i++){
    if(!*1{
      k = i-1;
      break;
    }
  }
  cout << k << endl;
  
  return 0;
}

*1:long long)pow(2.,i) <= N