标签:
题目大意:给出 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;
}
标签:
原文地址:http://blog.csdn.net/kl28978113/article/details/45460727