#P1079. Ratio
Ratio
题目描述
如果你看过电视上关于股市动态的报道,你会听到主持人说类似“上涨的股票数量是下跌股票数量的 14 比 9”,这意味着当天每有 14 只股票增值,大约有 9 只股票贬值。通常,当你听到这句话时,屏幕上会显示类似以下内容:
上涨:1498
下跌:902
作为一个对数字敏感的人,你会注意到主持人本可以说“上涨的股票数量是下跌股票数量的 5 比 3”,这更接近实际发生的情况。毕竟,赢家与输家的确切比例(精确到小数点后六位)是 ,而他报告的比例是 14 比 9,即 ,误差为 ;他可以说“5 比 3”,这样引入的误差仅为 。当然,“5 比 3” 的估计不如“1498 比 902” 准确;显然,另一个目标是使用较小的整数来表示比例。那么,为什么主持人会说“14 比 9” 呢?因为他的算法是去掉每个数字的最后两位数字,并将这些数字用作近似比例。
主持人需要的是一系列越来越精确的有理数近似值,以便他可以选择一个在电视上读出来。具体来说,他需要一个序列 ,其中 是分母为 1 的有理数,最精确地匹配赢家与输家的真实比例(在平局的情况下向上取整), 是分母最小的有理数,提供比 更精确的近似值,而 是用最小可能的分母表示的确切比例。有了这个序列,主持人可以决定哪个比例在准确性和简洁性之间提供了最佳权衡。
例如,如果 5 只股票价格上涨,4 只股票价格下跌,分母为 1 的最佳近似值是 ;也就是说,对于每一只下跌的股票,大约有一只股票上涨。这个答案与确切答案相差 ( 与 )。分母为 2 的最佳近似值是 和 ,但它们并没有比比例 更精确,因此不会被考虑。分母为 3 的最佳近似值是 ,比之前看到的任何近似值都更精确,因此应该报告。最后,当然, 是确切的比例,因此它是序列中报告的最后一个数字。
你能自动化这个过程并帮助主持人吗?
输入
输入包含多对正整数。每对数字单独占一行,从第一列开始,两个数字之间用空格分隔。每对数字的第一个数字是当天上涨股票的数量,第二个数字是当天下跌股票的数量。股票总数永远不会超过 5000。
输出
对于每对输入数字,标准输出应包含一系列对赢家与输家比例的近似值。第一个近似值的分母为 1,最后一个近似值是用最小可能的分母表示的确切比例。中间的近似值越来越精确,分母也越来越大,如上所述。
每对数字的近似值逐行打印,从第一列开始,近似值的分子和分母用斜杠(/
)分隔。一个近似值序列与另一个序列之间用一个空行分隔。
输入数据 1
5 4
1498 902
输出数据 1
1/1
4/3
5/4
2/1
3/2
5/3
48/29
53/32
58/35
63/38
68/41
73/44
78/47
83/50
88/53
93/56
377/227
470/283
563/339
656/395
749/451
来源
美国中南部 1998