当前位置:   article > 正文

Toyota Programming Contest 2023#8(AtCoder Beginner Contest 333)G. Nearest Fraction(有理实数求分母不超过n的最优逼近)

Toyota Programming Contest 2023#8(AtCoder Beginner Contest 333)G. Nearest Fraction(有理实数求分母不超过n的最优逼近)

题目

给一个不超过1的实数r,r最多18位小数,

和一个分母n(n<=1e10),求分母不超过n的与该有理实数的最优逼近,即二者绝对值之差最小

有理实数显然可以转成分数

思路来源

官方题解

farey序列论文 一类分数问题的研究.pdf

题解

1. 采用python的limit_denominator的函数,注意加上一个eps

2. 采用Yang Zhe《一类分数问题的研究》一论文中提供的方式

3. 在stern-brocot树上二分套二分,或考虑参考官方题解

代码

人生苦短,我选python

  1. from fractions import Fraction
  2. a=input().split(".")[1]
  3. n=int(input())
  4. r=(Fraction(int(a),10**len(a))-Fraction(1,10**100)).limit_denominator(n)
  5. print(r.numerator,r.denominator)
  1. from fractions import *
  2. from decimal import *
  3. x=Fraction(Decimal(input())-Decimal(1e-25)).limit_denominator(int(input()))
  4. print(x.numerator,x.denominator)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/52660
推荐阅读
相关标签
  

闽ICP备14008679号