우리는 r
0과 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.0123
and p=3
이면로 a/b
시작해야합니다 0.012
. p
소수 부분의 첫 번째 숫자 r
가 0이면 정의되지 않은 동작이 허용됩니다.
승 기준 :
- 알고리즘 적으로 가장 빠른 알고리즘이 이깁니다. 속도는 O (p)로 측정됩니다.
- 가장 빠른 알고리즘이 여러 개인 경우 가장 짧은 알고리즘이 승리합니다.
- 본인의 답변은 가능한 승자 세트에서 제외됩니다.
추신 : 수학 부분은 실제로 훨씬 쉽습니다 . 이 게시물 을 읽는 것이 좋습니다 .
padEnd
및match
? 당신은 할 수 없습니다slice
정확한 길이로 각 스트링 한 다음 빼기?