Когда вы округляете число, если следующая цифра, >= 5
вы добавляете 1. Например:
3.1415926535 rounded to 1dp is 3.1
3.1415926535 rounded to 4dp is 3.1416 <-- Note the 5 changed to 6
3.1415926535 rounded to 5dp is 3.14159
3.1415926535 rounded to 9dp is 3.141592654 <-- Note the 3 changed to 4
Ваша задача состоит в том, чтобы получить целое число в качестве входных данных и вывести число десятичных разрядов, перед которыми вам нужно будет округлить квадратный корень из числа, то есть количество десятичных разрядов перед цифрой числа, которая >= 5
встречается.
Целое число будет в диапазоне от 0 до 100 000 включительно, поэтому для граничного случая 59752 необходимо поддерживать 17 десятичных знаков (для проверки 17-го числа).
Если ваш язык программирования не может изменить количество десятичных знаков, вы можете отобразить «?» сообщение пользователю.
Пример:
Input Root Output
5 -> 2.23 606797749979 -> 2
41 -> 6.40312423 743284 -> 8 (Largest gap under 100)
596 -> 24.4131112314 674 -> 10 (Largest gap under 1000)
59752 -> 244.44222221212112029 -> 16 (Largest gap under 100000)
Делай что хочешь на идеальных площадях.
Это код-гольф, поэтому выигрывает самый короткий код.
Для всех, кто интересуется, число 310 617 является наибольшим до 1 000 000 и имеет 18, прежде чем вы достигнете цифры >= 5
.
Ответы:
CJam, 17 байт
Попробуйте онлайн.
источник
Pyth, 13 байт
Тестирование
Начните с
Q
равного ввода. На каждом временном шаге умножьтеQ
на 100, рассчитав какchr('d')
. Возьми его квадратный корень. Возьми этот мод 10. Если результат больше чем5
, прекратить. Выведите количество итераций, которое потребовалось для завершения, с 0 индексами.В деталях:
источник
CJam,
292628 байтПопробуйте онлайн.
Ставит "?" если число не появляется, его можно округлить (идеальный квадрат или слишком длинный).
источник
Pyth, 22 байта
объяснение
Я абсолютно уверен, что это можно сыграть в гольф. Если на входе нет цифры выше 4, будет напечатано -1. Поддерживает 17dp.
источник
Javascript, 59 байт
Возвращает
?
для 59752, потому что JavaScript использует только двойную точность.источник
Оболочка Linux, 52 байта
Я пытался найти чистое
dc
решение, но не смог. Точность регулируется (первое число).Поскольку ОП любезно указывает, что «вы можете делать то, что вы хотите на идеальных квадратах», в этом случае это решение выдает точность + 1, в данном случае 35.
источник
Mathematica 60 байтов
пример
источник
Apply
.Рубин, 46 байт
Это может быть недопустимо, так как оно соответствует только 16 цифрам.
источник
nil
, поскольку ни одна цифра после 4 не находится во всей строке. Это может зависеть от версии ruby.