Квадратная плотность числа чисел (SNDD) числа, изобретенного мной, - это отношение числа квадратов чисел, найденных в последовательных цифрах, к длине числа. Например, 169 представляет собой трехзначное число, содержащее 4 квадратных числа - 1, 9, 16, 169 - и, таким образом, имеет плотность четырехзначного числа 4/3 или 1,33. Четырехзначное число 1444 имеет 6 квадратов - 1, 4, 4, 4, 144, 1444 - и, следовательно, соотношение 6/4 или 1,5. Обратите внимание, что в предыдущем примере квадраты можно повторять. Кроме того, 441 не допускается, потому что он не может быть найден последовательно внутри номера 1444.
Ваша задача - написать программу, которая ищет в заданном диапазоне A - B (включительно) число с наибольшей квадратной плотностью числа. Ваша программа должна соответствовать следующим спецификациям:
- Возьмите вход A, B в диапазоне от 1 до 1 000 000 000 (1 миллиард). Пример:
sndd 50 1000
- В результате верните число с наибольшим SNDD. В случае ничьей верните наименьшее число.
- 0 не считается квадратом в любой форме, 0, 00, 000 и т. Д. Также не учитываются квадраты, начинающиеся с 0, например 049 или 0049.
- Обратите внимание, что все число не должно быть квадратным числом.
Примеры:
sndd 14000 15000
Output: 14441
sndd 300 500
Output: 441
Бонус: Какое число с наибольшим SNDD между 1 и 1 000 000 000? Можете ли вы доказать, является ли это наибольшим из возможных, или может быть большее в более высоком диапазоне?
Текущие результаты:
- Рубин: 142
- Windows PowerShell: 153
- Скала: 222
- Python: 245
Теперь, когда ответ был выбран, вот моя (невнятная) справочная реализация в JavaScript: http://jsfiddle.net/ywc25/2/