はまやんはまやんはまやん

hamayanhamayan's blog

てんびんばかり [Kyoto University Programming Contest 2019 C]

https://atcoder.jp/contests/kupc2019/tasks/kupc2019_c

解説

https://atcoder.jp/contests/kupc2019/submissions/7961542

最初の分銅は1gにする。
すると、1~Kgは測れる。
次に用意する分銅はK+1としたい所だが、(2K+1)gを用意すればいい。
例えば、K+1gを測りたいときは、
(2K+1)=(K+1)+K
とすれば測れる。
こうすると上限はK+(2K+1)*Kまで測れるようになる。
これで上限をジャンジャン増やしていけばいい。

ll M, K;
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> M >> K;

    ll bundo = 1;
    int ans = 1;
    ll ma = K;
    while (ma < M) {
        bundo = ma * 2 + 1;
        ans++;
        ma += bundo * K;
    }
    cout << ans << endl;
}