Это древнее знание, что каждое неотрицательное целое число может быть переписано как сумма четырех квадратов целых чисел. Например, число 1 может быть выражено как . Или, вообще, для любого неотрицательного целого числа существуют целые числа такие что
Джозеф-Луи Лагранж доказал это в 1700-х годах, и поэтому его часто называют теоремой Лагранжа .
Это иногда обсуждается в связи с кватернионами - типом чисел, обнаруженным Уильямом Гамильтоном в 1800-х годах, представленном как
Рудольф Липшиц изучал кватернионы только с целочисленными компонентами, называемыми липшицевыми кватернионами. Используя квадрант, мы можем представить, что у каждого липшицевого кватерниона можно найти друга в целых числах. Например, кватернион можно рассматривать как связанный с целым числом . Кроме того, если мы пойдем назад, то каждое целое число можно будет считать имеющим друга в квантионах Липшица.
Но есть интересная деталь в теореме Лагранжа - суммирование не уникально. Каждое целое число может иметь несколько различных наборов из четырех квадратов, которые можно суммировать для его создания. Например, число 1 можно выразить четырьмя способами, используя неотрицательные целые числа (давайте рассмотрим только неотрицательные для этой задачи):
Слагаемые всегда являются квадратами 0 или 1, но они могут находиться в разных позициях в выражении.
Для этой задачи давайте также «отсортируем» наши слагаемые по убыванию, чтобы исключить дубликаты, чтобы в этом упражнении можно было учесть, что 1 имеет только один способ представления в виде суммы четырех квадратов:
Другим примером является число 42, которое может быть выражено четырьмя способами (опять же, только учитывая неотрицательные a, b, c, d и устраняя дублирующиеся расположения компонентов)
Что если мы представим каждый из этих различных способов выражения целого числа как связанный с определенным кватернионом? Тогда мы могли бы сказать, что число 42 связано с этими четырьмя кватернионами:
If we imagine the standard computer graphics interpretation of a quaternion, where , and are vectors in three dimensional Euclidean space, and so the , and components of the quaternion are 3 dimensional Cartesian coordinates, then we can imagine that each integer, through this thought process, can be associated with a set of 3 dimensional coordinates in space. For example, the number 42 is associated with the following four coordinates:
Это можно рассматривать как облако точек или набор точек в пространстве. Теперь, одна интересная вещь о наборе конечных точек в пространстве - это то, что вы всегда можете нарисовать вокруг них минимальную ограничивающую рамку - коробку, которая достаточно велика, чтобы вместить все точки, но не больше. Если вы представляете, что это обычное поле, выровненное по осям , оно называется ограничивающим прямоугольником, выровненным по оси . Ограничительная рамка также имеет объем, который вычисляется путем определения его ширины, длины и высоты и умножения их вместе.
Затем мы можем представить объем ограничивающего прямоугольника для точек, образованных нашими кватернионами. Для целого числа 1 мы используем, используя критерии этого упражнения, один кватернион, чей квадрант равен 1, . Это очень простое облако точек, оно имеет только одну точку, поэтому его ограничивающий прямоугольник имеет объем 0. Однако для целого числа 42 у нас есть четыре кватерниона и четыре точки, вокруг которых мы можем нарисовать ограничивающий прямоугольник. Минимальная точка поля - а максимальная - resulting in a width, length, and height of 2, 2, and 2, giving a volume of 8.
Let's say that for an integer , the qvolume is the volume of the axis-aligned bounding box of all the 3D points formed by quaternions that have a quadrance equal to , where the components of the quaternion are non-negative and .
Create a program or function that, given a single non-negative integer , will output 's qvolume.
Examples:
input -> output
0 -> 0
1 -> 0
31 -> 4
32 -> 0
42 -> 8
137 -> 96
1729 -> 10032
This is code-golf, smallest number of bytes wins.