우리는 r0과 1 사이 의 부동 소수점 숫자 와 integer p입니다.
r최소 p자릿수 이상의 근사값을 가진 가장 작은 분모를 가진 정수의 분수를 찾으십시오 .
- 입력 :
r(부동 소수점 수) 및p(정수). - 출력 :
a및b정수a/b(float)는 숫자r까지 근사값p입니다.b가능한 양의 정수가 가장 작습니다.
예를 들면 다음과 같습니다.
- 경우
r=0.14159265358979와p=9, - 그 결과는
a=4687와b=33102, - 왜냐하면
4687/33102=0.1415926530119026.
모든 솔루션은 이론적으로 임의 정밀도 유형으로 작동해야하지만 구현의 고정밀 유형으로 인한 제한은 중요하지 않습니다.
정밀도는 " 0." 뒤에있는 숫자의 수를 의미합니다 r. 따라서 r=0.0123and p=3이면로 a/b시작해야합니다 0.012. p소수 부분의 첫 번째 숫자 r가 0이면 정의되지 않은 동작이 허용됩니다.
승 기준 :
- 알고리즘 적으로 가장 빠른 알고리즘이 이깁니다. 속도는 O (p)로 측정됩니다.
- 가장 빠른 알고리즘이 여러 개인 경우 가장 짧은 알고리즘이 승리합니다.
- 본인의 답변은 가능한 승자 세트에서 제외됩니다.
추신 : 수학 부분은 실제로 훨씬 쉽습니다 . 이 게시물 을 읽는 것이 좋습니다 .
padEnd및match? 당신은 할 수 없습니다slice정확한 길이로 각 스트링 한 다음 빼기?