题意:给出两个数a和b,不断找出两个整数x和y,使他们的商x/y逐渐逼近a/b,y是从1到b。
题解:因为y是从1到b,可以计算出x,然后计算x/y与a/b的差值,让初始差值很大,然后每次差值有减小,就输出这组解。
#include <stdio.h>
#include <math.h>
int a, b;
int main() {
int cas = 0;
while (scanf("%d%d", &a, &b) == 2) {
double temp = 1 << 30, c = a * 1.0 / b;
if (cas > 0)
printf("\n");
for (int i = 1; i <= b; i++) {
int j = i * 1.0 * a / b + 0.5;
if (temp > fabs(j * 1.0 / i - c)) {
temp = fabs(j * 1.0 / i - c);
printf("%d/%d\n", j, i);
}
}
cas++;
}
return 0;
}