3
n位精度的近似浮点数
我们有一个r介于0和1之间的浮点数和一个整数p。 查找具有最小分母的整数分数,其分数近似r至少为- p位数。 输入:(r一个浮点数)和p(整数)。 输出:a和b整数,其中 a/b(以浮点数表示)近似r到p数字。 b 是可能的最小此类正整数。 例如: 如果r=0.14159265358979和p=9, 那么结果是a=4687和b=33102, 因为4687/33102=0.1415926530119026。 任何解决方案都必须在理论上适用于任意精度类型,但是由实现的固定精度类型引起的限制并不重要。 精度表示在“ 0.” 之后的数字位数r。因此,如果r=0.0123和p=3,a/b则应从开始0.012。如果的p小数部分的第一位数字为r0,则可以接受未定义的行为。 获胜标准: 算法上最快的算法获胜。速度以O(p)为单位。 如果有多个最快的算法,则最短者获胜。 我自己的答案被排除在可能的获胜者之外。 ps数学部分实际上看起来似乎容易得多,我建议您阅读这篇文章。