У нас є число з плаваючою комою rміж 0 і 1 і цілим числом 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і p=3, тоді a/bслід почати з 0.012. Якщо перші pцифри дробової частини rдорівнюють 0, невизначена поведінка є прийнятною.
Критерії виграшу:
- Алгоритмічно найшвидший алгоритм виграє. Швидкість вимірюється в O (p).
- Якщо існує кілька найшвидших алгоритмів, виграє найкоротший.
- Моя власна відповідь виключається із набору можливих переможців.
Якщо математична частина насправді набагато простіша, як здається, пропоную прочитати цю публікацію.
padEndіmatch? Ви не можете простоsliceвиконати кожну рядок потрібної довжини, а потім відняти їх?