けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 354 A - Exponential Plant (6Q, 灰色, 100 点)

while 文の練習!

問題概要

0 日目には 0 cm の植物がある。 i 日目の夜に植物は  2^{i} cm 伸びる。

朝に植物を観察するとき、高さが最初に  H を超えるのは何日目か?

制約

  •  1 \le H \le 10^{9}

考えたこと

「高さが  H 以下であるうちは反復し続ける」というような while 文を実装しよう。

慣れてないと意外と戸惑うかもしれない。

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    long long H;
    cin >> H;
    
    int day = 0;
    long long height = 0;
    while (height <= H) {
        height += 1LL << day;
        ++day;
    }
    cout << day << endl;
}