码迷,mamicode.com
首页 > 其他好文 > 详细

UVA - 654 Ratio

时间:2015-05-03 20:43:06      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:

题目大意:给出 a 和 b,找出一个序列,要求分母 i 由 1 到 b,分子 u 是所有可能的分子中 u / i 最接近 a / b 的,然后将中的一些项删除,保证所 u / i 是越来越接近 a / b 的。

解题思路:暴力枚举分母i,分子 u = i * a / b (四舍五入),然后维护一个标准,保证是接近的。


#include <cstdio>
#include <cmath>

int main() {
    int a, b, T = 0;
    while (scanf("%d%d", &a, &b) != EOF) {
        if (T++) puts("");
        double ans = 1.0 * a / b;
        double tmp = 0x3f3f3f3f;
        for (int i = 1; i <= b; i++) {
            int x = ans * i + 0.5;
            if (fabs(ans - 1.0 * x / i) < tmp) {
                tmp = fabs(ans - 1.0 * x / i);
                printf("%d/%d\n", x, i);
            }
        }
    }
    return 0;
}

UVA - 654 Ratio

标签:

原文地址:http://blog.csdn.net/kl28978113/article/details/45460727

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!