首页 > 其他 > 详细

hdu 4823 Energy Conversion(数学)

时间:2014-05-22 22:33:45      阅读:420      评论:0      收藏:0      [点我收藏+]

题目链接:hdu 4823 Energy Conversion

题目大意:中文题,不解释。

解题思路:首先判断一下m是否已经大于n了,如果大于那么就是0,假设中间变换的各个值为ai,那么bi=ai+c,bi数组为等比数组(可推),所以就有了cnt=log((n+c)a)log(double(k)),结果为浮点数,需要向上取整。

#include <cstdio>
#include <cstring>
#include <cmath>

int main () {
    int cas;
    double n, m, v, k;
    scanf("%d", &cas);

    while (cas--) {
        scanf("%lf%lf%lf%lf", &n, &m, &v, &k);

        if (m >= n) {
            printf("0\n");
            continue;
        }

        double tmp = (m-v)*k;
        if (tmp <= m) {
            printf("-1\n");
        } else {
            double c = -(v * k) / (k - 1);
            double a = m + c;
            double cnt = log((n+c) / a) / log(double(k));
            printf("%lld\n", (long long)ceil(cnt));
        }
    }
    return 0;
}

hdu 4823 Energy Conversion(数学),布布扣,bubuko.com

hdu 4823 Energy Conversion(数学)

原文:http://blog.csdn.net/keshuai19940722/article/details/26516291

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!