У нас есть число с плавающей запятой 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цифры дробной части r0, неопределенное поведение приемлемо.
Критерии выигрыша:
- Алгоритмически быстрый алгоритм выигрывает. Скорость измеряется в O (p).
- Если есть несколько самых быстрых алгоритмов, то самый короткий выигрывает.
- Мой собственный ответ исключен из множества возможных победителей.
Ps математическая часть на самом деле намного проще, как кажется, я предлагаю прочитать этот пост.
padEndиmatch? Разве вы не можете простоsliceкаждую строку на правильную длину, а затем вычесть их?