每个分子和分母都在[1,L]中,因此,每一个分母都存在一个使 分子/分母 最接近A然后比较出最小误差的分子
网上有种叫追赶法
不太理解
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<cmath>
#include<algorithm>
#define Max 100001
using namespace std;
typedef long long ll;
int main() {
double A,esp;
int L,ans1,ans2;
cin >> A >> L;
ans1 = ans2 = 1;
esp = fabs(A - 1);
for(int i = 1; i <= L; i++) { //枚举分母
int j = i * A + 0.5; //四舍五入
if(j > L) j = L;
if(j < 1) j = 1;
double esp1 = fabs(A - 1.0 * j / i);
if(esp1 < esp) {
esp = esp1;
ans1 = j;
ans2 = i;
}
}
cout << ans1 <<" " << ans2 << endl;
return 0;
}