【解题思路】
这是一道数学题。这道题运用了一个“逼近”的思想,需要在可能的情况下将所有合法解无限地向差值尽可能小的情况逼近。来看一下数学上的推导过程。
A'/B' >= A/B,
根据十字相乘法可以把除法运算变成整数乘法,在int中解决问题,即:
A' * B >= B'*A
由于数据比较小,我们想到暴力枚举。最后把ans1(a')ans2(b')的初值设置一下。开始跑两层循环,判断我们手写gcd函数,下一步便是难以考虑的:逼近。我们要维护最小差值,也就是一直更新ans1,ans2,那么我们怎么判断什么时候更新ans1,ans2呢?
判断条件:
A'1/B'1 > A'2/B'2