BZOJ3858 Number Transformation

2015.01.13 09:34 Tue| 1 visits oi_2015| 2015_刷题日常| Text

Solution

这是要有多么鬼畜的逗逼题……

显然,当 K 比较大的时候,到最后就会发现类似于 x * i -> x * (i + 1) -> x * (i + 2) 的情况。那么 K 要多大才会出现这种情况呢? 很显然,答案是 sqrt(x)。

Code

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

long long test, n, k;

int main()
{
    while (cin >> n >> k, n || k)
    {
        for (int i = 2; i <= k; ++i)
        {
            long long t = (n + i - 1) / i;
            if (t <= i) { n = t * k; break; }
            n = t * i;
        }
        cout << "Case #" << ++test << ": " << n << '\n';
    }
    return 0;
}