Codeforces Burning Midnight Oil

4017 단어 codeforces
/*

 * BurningMidnightOil.cpp

 *

 *  Created on: 2013-10-12

 *      Author: wangzhu

 */



/**

 *           ret:

 * 1)、 n<=k ,   ret = n;

 * 2)、 n > k ,  ret>=k&ret <= n,                ,   ,

 *                      ,    ,           

 */

#include<cstdio>

#include<iostream>

using namespace std;

#define LL long long

LL calc(int k, int v) {

    //      

    LL sum = v, kk = k;

    while (v / kk) {

        sum += v / kk;

        kk *= k;

    }

    return sum;

}

int binarySearch(int n, int k) {

    LL left = k, right = n, mid = -1;

    while (left <= right) {

        mid = left + (right - left) / 2;

        if (n <= calc(k, mid)) {

            right = mid - 1;

        } else {

            left = mid + 1;

        }

    }

    return (int) left;

}

int main() {

    freopen("data.in", "r", stdin);

    int n, k;

    while (~scanf("%d%d", &n, &k)) {

        if(n <= k) {

            printf("%d
",n); continue; } printf("%d
", binarySearch(n, k)); } return 0; }

좋은 웹페이지 즐겨찾기