1729, известное как число Харди – Рамануджана , является наименьшим положительным целым числом, которое может быть выражено как сумма двух кубов натуральных чисел двумя способами ( 12^3+1^3=10^3+9^3=1729
). Получив целое число n
(поскольку ввод в любой форме, естественной для вашего языка по вашему выбору), найдите наименьшее положительное целое число, которое может быть выражено как сумма двух положительных целых, возведенных в эту n
степень двумя уникальными способами. Нет использования внешних источников. Побеждает несколько персонажей.
Обратите внимание, что это на самом деле нерешенная проблема для n>4
. Для этих чисел пусть ваша программа будет работать вечно в поиске или умрете, пытаясь! Сделайте так, чтобы при наличии бесконечного времени и ресурсов программа решала проблему.
источник
n
степень». В противном случае91
(не1729
) является решением дляn=3
, так как6^3+(−5)^3=4^3+3^3=91
. Я узнал об этом из вашей ссылки на Википедию, так что, возможно, ваша ссылка на HM делает это ненужным по соглашению. Ура!1
это первое решение:1 = cbrt(0.5)^3 + cbrt(0.5)^3 = ...
Ответы:
APL
4541Укороченная, но более медленная версия из 41 символа:
Вы можете попробовать это онлайн , просто вставьте функцию и вызовите ее с номером:
(Хотя алгоритм довольно тупой, не ожидайте, что онлайн-интерпретатор вычислит n = 4)
Ответ для n = 2 - 50 = 5² + 5² = 7² + 1², потому что его число, которое «может быть выражено как сумма двух квадратов натуральных чисел - не говорит по-разному - двумя способами».
Если вы хотите добавить отдельное предложение, просто измените
(v∘.≤v)
на то(v∘.<v)
же количество символов, и n = 2 станет 65:Я бью GolfScript? Не может быть !!
источник
Руби, 132
Передать в
n
качестве аргумента командной строки. Первая линияstdout
- это решение.Оптимизирован для кода-гольфа, а не производительности. (Работает правильно. Но медленно. Делает больше, чем нужно.)
Вот более длинная, немного более быстрая C-программа. Тот же правильный, но ужасный алгоритм. (Мне действительно нужно больше изучать теорию!)
Проверено на
n
= 2,n
= 3.С, 234
Версия C берет
n
своеstdin
. Как и выше, первая строкаstdout
- это решение.источник
GolfScript 53
Ввод - это начальное число в стеке. Число на вершине стека в конце является ответом. Я объясню это более подробно, когда у меня будет шанс.
Например
Это довольно медленно сейчас. Он также считается
0
(так что ответом является 25n=2
, поскольку25=5^2+0^2=3^2+4^2
. Чтобы не считать 0, добавьте 2 символа(;
после первого,
Чтобы найти это
2 f=65
, так как65=8^2+1^2=5^2+6^2
источник
GolfScript (30 символов)
Примечание: это довольно медленно, потому что он выполняет поиск грубой силы, а не что-то элегантное, как очередь с приоритетами. Самое элегантное в этом - повторное использование
N
в качестве нижней границы для поиска: это верно1^N + 2^N > N
для всехN
.Берет
N
в стек, оставляет соответствующий номер такси в стеке. Чтобы взятьN
из стандартного ввода, prepend~
.Версия выше позволяет
x^N + x^N
(так дляN=2
этого дает50
). Чтобы требовать добавления различных чисел (65
вместо того,3
чтобы давать ), измените на4
. Чтобы разрешить0^N + x^N
(давать25
), удалите)
непосредственно передN?
.источник
Mathematica, 58 символов
Очень очень медленное решение с использованием функции генерации:
источник