我们有一个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
小数部分的第一位数字为r
0,则可以接受未定义的行为。
获胜标准:
- 算法上最快的算法获胜。速度以O(p)为单位。
- 如果有多个最快的算法,则最短者获胜。
- 我自己的答案被排除在可能的获胜者之外。
ps数学部分实际上看起来似乎容易得多,我建议您阅读这篇文章。
padEnd
和match
?您不能只将slice
每个字符串正确地长度然后减去它们吗?